是否有充分的理由以逗号分隔ips或将以下工作?
if (req.restarts == 0) {
if (!req.http.x-forwarded-for) {
set req.http.X-Forwarded-For = client.ip;
}
}
答案 0 :(得分:1)
这样做的原因可能是RFC7239
“for”参数用于公开有关客户端的信息 在一个链中启动了请求和后续代理 代理。
像squid这样的客户端代理也可以将原始IP添加到X-Forwarded-For标头中,所以如果你这样做并且请求已经设置了标头,那么varnish就不会添加它认为是client.ip的东西。作为标题字段的一部分。
更新
“真实IP”只会是标题的唯一值,如果客户端还没有提供 - 但像squid这样的代理就是这样做的。如果您始终希望客户端的IP(可能是不透明代理的IP - 因此创建XFF标头)作为唯一值,请忽略if (!req.http.x-forwarded-for)
条件。
但我真的会单独留下XFF标头,并在后端使用自定义标头字段,特别是如果你打算用它进行资源访问控制,这是使用XFF标头的固有不安全的事情。
请注意,可以使用setRequestHeader()方法在javascript中设置HTTP标头。
了解您的推荐目标是有用的。