- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个负载均衡器和两台服务器。我想在我的 apache 中添加 X-Forwarded-For,以便我可以看到请求的 IP,而不是看到每个请求的负载均衡器 IP。我该怎么做?我查了一下,X-Forwarded-For: client, proxy1, proxy2
看起来像是一个解决方案。客户端是负载均衡器 IP,proxy1 是服务器 1 的 IP,proxy2 是服务器 2 的 IP?
最佳答案
我假设您已经引用了 http://en.wikipedia.org/wiki/X-Forwarded-For - 这可能是您复制 X-Forwarded-For: client, proxy1, proxy2
格式的位置。
我还假设您正在使用专用的负载平衡器(Apache HTTPD 之外的其他东西),它将流量定向到您的“服务器” - 每个服务器上都包含您的“Apache”,并且您知道如何配置负载平衡器传递此 header 。
我认为您需要理解的缺失部分是(也来自维基百科页面):
where the value is a comma+space separated list of IP addresses, the left-most being the original client, and each successive proxy that passed the request adding the IP address where it received the request from. In this example, the request passed through proxy1, proxy2, and then proxy3 (not shown in the header). proxy3 appears as remote address of the request.
即,如果您的负载均衡器是给定请求经过的唯一代理(至少是唯一添加 X-Forwarded-For header 的代理),则该 header 将仅包含一个值 - 您的负载的值平衡器。
假设您正在处理来自 203.0.113.1 客户端的请求,并且该请求来自 IP 为 192.0.2.1 的负载均衡器。然后,在 2 台服务器之一上运行的 Apache HTTP 实例应该会看到来自 192.0.2.1 的请求,其中包含:X-Forwarded-For: 203.0.113.1
。
为了在 Apache HTTPD 日志中看到此 header ,您需要使用如下内容:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %D \"%{Host}i\" \"%{X-Forwarded-For}i\"" custom
负载均衡器的 IP (192.0.2.1) 仍将显示为日志条目中的第一个字段 (%h
),但最后一个字段 (\"%{X-Forwarded -For}i\"
) 将包含客户端的 IP - 在本例中为 203.0.113.1
。如果客户端位于也报告 X-Forwarded-For 的其他代理后面,则将是一个以逗号分隔的列表 - 最左边的地址是距离您的服务器“最近”的地址 - 即,您的负载均衡器收到请求的来源。
关于Apache:如何使用负载均衡器和 2 个服务器编写 X-Forwarded-For?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18834313/
我是一名优秀的程序员,十分优秀!