看来我的 Amazon Elastic Load Balancer 正在将流量分配给 EC2,但没有它们的 IP 地址?
这是正常现象吗?这非常烦人。例如,ELB CName 位于我的域名 DNS 上,我访问了该域,访问日志中有 ELB 的 IP 地址,而不是访问者的 IP 地址。
答案1
如果你在 HTTP 模式下运行 ELB,它添加一些 HTTP 标头发送到 EC2 实例的请求,其中包括X-Forwarded-For
包含客户端 IP 地址的标头。
X-Forwarded-For: 203.0.113.7
请注意,如果其他负载均衡器或代理处理了该请求,此标头可能包含多个 IP。在这种情况下,您需要提取列出的第一个 IP。
X-Forwarded-For: 203.0.113.7, 10.12.33.44, 10.73.23.88
答案2
由于您评论中的链接已损坏,因此请按照以下方法记录访问者的 IP 地址:
在httpd.conf中,创建新的日志格式:
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined-elb
然后使用它:
CustomLog logs/access_log combined-elb
就这么简单。