2013-08-25 10:45:51
来 源
ITJS.CN
Varnish
这篇文章里介绍了设置Varnish后端服务器显示用户真实的IP的方法,希望对于Varnish入门者给与帮助。更多Varnish资源请本站内搜索。
假设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部分。

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。