nginx 反向代理的 ip 设置

nginx反向代理后,php 通过 $_SERVER[‘REMOTE_ADDR’] 获取 ip 时,获取到的 ip 都是 nginx 的 ip 127.0.0.1 。这时需要nginx去获取客户端的ip地址,并设置到反向代理头中,供 php 获取使用。

一、之前 nginx 配置

server{
	listen      80;
	charset     utf-8;

	location = /test{
		proxy_pass http://127.0.0.1:8080/index.php;
	}        
}

二、设置反向代理头 ip 信息后的 nginx 配置

  server{
	listen      80;
	charset     utf-8;

	location = /test{
		proxy_pass http://127.0.0.1:8080/index.php;
		proxy_set_header    X-Real-IP        $remote_addr;
		proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
		proxy_set_header    HTTP_X_FORWARDED_FOR $remote_addr;
	}        
}

在反向代理中增加:

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

代码后,就能获取到客户端真实 ip。