【发布时间】:2014-09-08 19:44:02
【问题描述】:
我有一个 EC2 linux 实例,它在端口 8081 上运行了一个 tomcat webapp(使用 spring mvc)。没有负载均衡器。我已经在 aws 控制台上设置了实例安全组以打开端口 80。在 ec2 实例上,我通过执行将请求从端口 80 路由到 8081
sudo /sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8081
我需要访问客户的 IP 地址(以确定他们的国家)。所以我在 HttpServletRequest 对象中寻找 x-forwarded-for 和 x-real-ip 标头。
在 ec2 上运行时,以下内容始终返回 null,但在我的本地计算机上运行相同的 webapp(并使用 ngrok 通过公共 ip 访问)时返回有效值。
request.getHeader("x-forwarded-for") or request.getHeader("x-real-ip")
是否需要在 AWS 控制台或 EC2 实例上进行任何其他设置以获取 webapp 中的标头?还是 iptables 路由弄乱了标头?
【问题讨论】:
标签: spring tomcat amazon-web-services amazon-ec2 http-headers