【发布时间】:2013-12-13 01:53:36
【问题描述】:
重要的是,我的网站(位于 Amazon EC2 实例上)能够检测到客户端的 IP 地址。 HttpRequest.UserHostAddress 属性没有任何价值,因为它仅包含代理入站请求的 Amazon 负载均衡器的 IP 地址。
研究 StackOverflow 让我了解到使用 HttpRequest.Headers[“X-Forwarded-For”] 会提供客户端的公共 IP 地址,而且事实上,我已经使用这种技术一年了,没有任何问题。直到今天。
今天我开始看到某个特定用户的 IP 地址 10.116.146.52 被报告。这显然是一个私有 IP 地址。 X-Forwarded-For 似乎已经停止工作——但仅限于这个用户。使该用户与众不同的一件事是他从中国登录。当他使用同一台笔记本电脑并从美国登录时,没有问题。只有当连接来自中国时,才会出现问题。
最后,我想指出,我意识到X-Forwarded-For 可以包含一个以逗号分隔的 IP 地址列表,而不仅仅是一个。在这种情况下,我总是抓住链中的第一个,因为这应该是用户的公共 IP 来源,正如讨论 X-Forwarded-For 的 Wikipedia 文章中所述。
【问题讨论】:
-
你应该在AWS Forum 上发布这个问题,亚马逊的人可以看看幕后,让你有一些见解。
标签: amazon-ec2 ip-address load-balancing