2010-12-22 16 views
11

私はgunicornとnginxとdjangoで設定されたWebサーバーを持っています。Django get IP only 127.0.0.1

私はリモートでアクセスし、これに伴っています: デフtestIP(リクエスト): IP_ADDRESS = utils.get_ip(リクエスト)

私は私が言ったように私は127.0.0.1のIPアドレスを取得しておきますリモートでアクセスするため、ローカルアドレスを与えるべきではありません。

ガンコンと関係があるかもしれないと思っていますが、まず皆さんに洞察力があるかどうかを確認したいと思います。

+0

どのようにnginxをgunicornに接続していますか? –

答えて

24

get_ip()はどのように機能しますか?

nginxがリバースプロキシで、gunicornがアプリケーションサーバーの場合、ローカルマシン上のnginxから要求が常に得られます。 nginxのアプリケーションサーバに送信する

本当のIPはどちらか使用してproxy_set_header X-Real-IP $remote_addr;

だから、あなたがそれを設定することをお勧めしますnginxのconfのラインを介して私の場合HTTP_X_REAL_IPであり、かつ異なるヘッダーのためのあなたのDjangoアプリケーションのアカウントで新しいIPヘッダーまたはセットrequest.META['REMOTE_ADDR'] = request.META['HTTP_X_REAL_IP']

+0

ありがとうございます。それはそれをした! – DantheMan

+0

おめでとうございます! ; ) –

+1

@DantheMan:異なる(おそらく良い)アイデアは、リバースプロキシミドルウェアを使用することです:http://docs.djangoproject.com/en/dev/ref/middleware/#reverse-proxy-middleware – Wolph