欢迎来到云服务器

服务器租用

设置Varnish后端服务器显示用户真实的IP的方法

假设apache为后端服务器

1、修改log记录模块
假设原来:
 LogFormat "%h %l %u %t "%r" %>s %b %T" common
增加X-Forwarded-For部分,修改后为
 LogFormat "%h %{X-Forwarded-For}i %l %u %t "%r" %>s %b %T" common

2、X-Forwarded-For部分可以在varnish的vcl_recv()函数内进行修改

 默认的varnish配置中default.vcl
 
sub vcl_recv {
       if (req.restarts == 0) {
   if (req.http.x-forwarded-for) {
       set req.http.X-Forwarded-For =
       req.http.X-Forwarded-For ", " client.ip;
   } else {
       set req.http.X-Forwarded-For = client.ip;
   }
       }
可以看到默认配置中已经将X-Forwarded-For指向了用户的IP,于是在LogFormat增加%{X-Forwarded-For}i后即可在日志文件中出现真实的用户IP。

3、那么如何让后端服务器知道用户实际发出HTTP请求时的host呢?
   我对default.vcl作了如下修改:
     else部分:
      set req.http.X-Forwarded-For = req.http.host;
    由于if部分是在req.http.X-Forwarded-For为空时添加的,我不太清楚什么时候req.http.X-Forwarded-For为空,所以只修改了else部分。

腾讯云代理

Copyright © 2003-2021 MFISP.COM. 国外vps服务器租用 梦飞云服务器租用 版权所有 粤ICP备11019662号