如何将REMOTE_ADDR设置为HTTP_X_REAL_IP?

时间:2014-12-06 07:41:40

标签: apache nginx centos cpanel varnish

我尝试过很多方法将REMOTE_ADDR(显示我的服务器IP)设置为HTTP_X_REAL_IP(显示访问者的IP)。

我正在使用带有Apache + NGINX + Varnish的cPanel。

REMOTE_ADDR使用NGINX + Varnish获取实际访客IP的最佳方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

不确定您拥有不同图层的顺序,假设互联网 - > NGINX - >清漆 - >阿帕奇?

但是在每一层中你必须明确转发client-ip以确保你将它放到apache层。 请注意,我将使用标准化的X-Forwarded-For标头而不是HTTP_X_REAL_IP

对于Nginx

set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;

对于清漆

sub vcl_recv {
  # Add a unique header containing the client address    
 if (req.http.x-forwarded-for) {
   set req.http.X-Forwarded-For = req.http.X-Forwarded-For;
  } else {
   set req.http.X-Forwarded-For = client.ip;
  }
  # [...]
}

在Apache日志文件中,您可以使用

检索X-Forwarded-For标头(其中包含nginx初始接收的原始客户端IP)
%{X-Forwarded-For}i