我很好奇,如果有人知道,是否可以构建一个
的清漆配置上下文: - 部署在3-(apache)-webserver池前面的Varnish服务器,充当缓存和LB. - 最近在清漆前放弃了第三方服务DDOS代理 - 现在所有对varnish的入站请求都有一个X-Forwarded-For:标头已经存在,表明“真正的”客户端IP地址是什么。 - 在apache主机上运行的后端PHP Web应用程序 - 希望只看到一个IP地址,而不是“正确的”XFF标头,它显示逗号分隔的列表IP1,IP2,IP3(用于外部代理;清漆作为代理) ,原始客户端IP - 例如) - 理想情况下我想做的是:让Varnish进行regexp模式匹配:在现有的入站X-F-F标头上重建;并删除外部DDOS代理IP地址
我在'default.vcl'文件中尝试了类似的东西,
set req.http.X-Forwarded-For = regsub(req.http.X-Forwarded-For,“123.123.123.123”,“”);
其中123.123.123.123是外部DDOS /代理的IP地址
但这肯定不起作用/不是正确的语法。我无法在网上找到好的资源来解释清漆中的regexp /或人们使用的清晰的例子。
如果有人能够朝着正确的方向发挥作用,当然会非常感激。
感谢下面的评论 - 我现在调整了我的配置如下,
if (req.http.x-forwarded-for) {
set req.http.X-Forwarded-For =
regsub(req.http.X-Forwarded-For, "\, 123\.123\.123\.123","");
} else {
set req.http.X-Forwarded-For = client.ip;
}
if (req.http.x-forwarded-for) {
set req.http.X-Forwarded-For =
regsub(req.http.X-Forwarded-For, "\, 123\.123\.123\.123","");
} else {
set req.http.X-Forwarded-For = client.ip;
}
现在我在我的apache日志中找到了,例如,
这对我来说,正则表达式实际上并没有按我想要的那样做。有没有办法以交互方式“测试”清漆,即为给定的VCL规则集提供一些已定义的输入,然后获取清漆以输出特定的输出;一种“干运行”处理作为一种促进调试的方式?
谢谢!