【发布时间】:2016-03-02 17:29:28
【问题描述】:
是否有充分的理由附加以逗号分隔的 ips 或以下工作?
if (req.restarts == 0) {
if (!req.http.x-forwarded-for) {
set req.http.X-Forwarded-For = client.ip;
}
}
【问题讨论】:
标签: nginx varnish varnish-vcl
是否有充分的理由附加以逗号分隔的 ips 或以下工作?
if (req.restarts == 0) {
if (!req.http.x-forwarded-for) {
set req.http.X-Forwarded-For = client.ip;
}
}
【问题讨论】:
标签: nginx varnish varnish-vcl
之所以会这样做,大概是RFC7239
“for”参数用于披露有关客户端的信息 启动请求和随后的代理链中的 代理。
像 squid 这样的客户端代理也可以将原始 IP 添加到 X-Forwarded-For 标头中,因此如果您这样做并且请求已经设置了标头,varnish 不会添加它认为的 client.ip作为标题字段的一部分。
更新:
如果客户端还没有提供“真实 IP”,那么“真实 IP”将只是标头的唯一值 - 但像 squid 这样的代理就是这样做的。如果您总是希望客户端的 IP(可能是不透明代理的 IP - 因此创建 XFF 标头)作为唯一值,请忽略 if (!req.http.x-forwarded-for) 条件。
但我真的会单独保留 XFF 标头并使用自定义标头字段在后端使用,特别是如果您打算将其用于资源访问控制,无论如何使用 XFF 标头都是不安全的事情。
另请注意,可以使用 setRequestHeader() 方法在 javascript 中设置 HTTP 标头。
了解您的推荐目标是很有用的。
【讨论】: