私のnginxバックエンドサーバーは私のフロントエンド1.2.3.4からのリクエストのみを受け入れる必要があります。ただし、nginxにも正しいIPアドレスを記録させたいので、set_real_ip_from
を使用します。ただし、これを行うと、構成のallow
ルールが一致せず、nginxは常に403を返します。関連する構成は次のとおりです。
allow 1.2.3.4;
deny all;
set_real_ip_from 1.2.3.4;
real_ip_heaader X-Real-IP;
どうすればこの問題を克服できますか?
私はこれを自分で探していましたが、解決策を見つけるのに「しばらく」かかったので、他の人が簡単に使えるようにここに置きます。
この場合、allow/deny構造は、実際のIP変数では機能しないため、機能しません。
代わりに、$ http_x_forwarded_for変数を使用できます:
## this goes before server section
## it allows us to check if forwarded ip is allowed to make request or not
map $http_x_real_ip $allowed {
default false;
## your ip goes here
~\s111.111.111.111 true;
## other ips you want to allow
}
server {
## ... other instructions...
set_real_ip_from 1.2.3.4;
real_ip_header X-Forwarded-For;
## you may want to add this to get "truly" real ip
real_ip_recursive on;
## ... other instructions...
## or any other location you need
location / {
if ($allowed = false) {
return 403;
}
## ... other instructions...
}
}