web-dev-qa-db-ja.com

nginxワニスnginxphp-fpm:phpの_SERVER ['REMOTE_ADDR']の実際のIP

これは特定の質問です。

Nginxサーバー(N1と呼びます)は:80でリッスンし、proxy_passでワニスに転送します。ワニスは127.0.0.1:6081でリッスンし、8080でNginx(N2)に転送します。N2はphp-fpmソケットと通信します。

N1 <> V <> N2 <> P

N1:

location / {
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_Host;

    proxy_pass http://varnish/;
    proxy_redirect off;
}

現在

$ _SERVER ['REMOTE_ADDR'] == '127.0.0.1'

望ましい

$ _SERVER ['REMOTE_ADDR'] == '実際のリモートアドレス'

1
user171555

これは具体的な答えです。 ;)

N1にx-forwarded-forを追加して、ニスとN2を通過させてfastcgiに送ることができます。

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

次に、fastcgiパラメータで:

fastcgi_param REMOTE_ADDR $http_x_forwarded_for;
2
3molo