2016-03-28 21 views
8

Nginxは、IPを制限するためのallowおよびdenyの構文をサポートしています。 allow 192.168.1.1;。しかし、トラフィックがリバースプロキシを通過する場合、IPはプロキシのIPを参照します。それで、特定の発信元IPをホワイトリストに登録し、他の着信要求をすべて拒否するように設定するにはどうすればよいですか?Nginx - 発信元IPを許可する

答えて

10

remote_addrはプロキシを参照しますが、クライアントアドレスにヘッダーフィールドX-Real-IP/X-Forwarded-Forを送信するようにプロキシを設定できます。

ngx_http_realipモジュールと組み合わせると、実際のクライアントアドレスをremote_addrに使用するように受信ヘッダーを変更できます。私はこれが期待どおりに許可/拒否の構文で動作すると信じています。

明確にする - モジュールを有効にして構成した後、許可/拒否の構文が同一である必要があります。あなたのIPアドレスとあなたのプロキシアドレスを以下のものに置き換えてください。

location/{ 
    allow <your ip>; 
    allow 127.0.0.1; 
    deny all; 
} 

バックエンドnginxのrealip設定:あなたのnginxのプロキシ設定に

set_real_ip_from <your proxy>; 
real_ip_header X-Forwarded-For; 

proxy_set_header  X-Real-IP  $remote_addr; 
proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for; 

複数持っている場合は

バックエンドnginxのは、許可/拒否

中間プロキシが関与する場合は、real_ip_recursiveを有効にして追加のアドレスをホワイトリストに追加する必要がありますh set_real_ip_fromディレクティブ。

+0

ありがとうございます - モジュールページには変数の取得方法のみが示されていて、ホワイトリストへの表示方法は示されていないため、設定でどのように表示されるかを表示できますか? – mahemoff

+0

私は、プロキシIPを元のIPに置き換えています。ありがとう。 – mahemoff

+1

はい。コメントの混乱のために申し訳ありません。オリジナルの投稿を更新しました。 – ngraves

関連する問題