使用NGINX反向代理时,如何让PHP Apache的REMOTE_ADDR获取真实客户端IP?
问题:Apache+Nginx反向代理环境(VestaCP)下REMOTE_ADDR无法获取真实客户端IP
切换到VestaCP的Apache搭配Nginx反向代理环境后,所有入站流量日志均显示为服务器IP,原因是Apache只能识别到Nginx代理服务器的IP(即服务器自身IP)。
通过phpinfo()验证,客户端IP已通过HTTP_X_FORWARDED_FOR和HTTP_X_REAL_IP正确转发,但并未写入REMOTE_ADDR变量。
已尝试在Nginx配置文件中添加以下规则,试图让IP从Nginx正确转发到Apache:
- 配置1:
fastcgi_param REMOTE_ADDR $http_x_real_ip; - 配置2:
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - 还尝试过手动指定IP来源:
set_real_ip_from 192.168.122.1;
目前$_SERVER['HTTP_X_REAL_IP']能显示正确的客户端IP,但$_SERVER['REMOTE_ADDR']仍无变化。由于使用的框架硬编码依赖$_SERVER['REMOTE_ADDR'],无法直接改用其他IP变量。
内容的提问来源于stack exchange,提问作者Hans
相关产品推荐
相关产品推荐

