nginx varnish nginx php-fpm:php的_SERVER的实际ip

这是具体的问题。

一个Nginx服务器(称为N1)侦听:80,并通过proxy_pass转发清漆Varnish在127.0.0.1:6081侦听,并转发到8080上的Nginx(N2)。N2与php-fpm套接字进行通信。

N1 <> V <> N2 <>点

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'] =='真正的远程地址'

这是一个具体的答案。 ;)

你可以在N1中添加一个x-forwarded-for,让它通过varnish和N2到fastcgi:

 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

然后在fastcgi params:

 fastcgi_param REMOTE_ADDR $http_x_forwarded_for;