【问题标题】:Elastic Load Balancer not passing X-Forwarded-For in Beanstalk app弹性负载均衡器未在 Beanstalk 应用程序中通过 X-Forwarded-For
【发布时间】:2014-02-21 09:31:55
【问题描述】:

我目前正在测试将我们的 web 应用程序部署到 Elastic Beanstalk 实例上。我创建了一个准系统应用程序,它使用 jstl 标记简单地输出请求标头,并且还通过从控制器内部获取标头。

但是,负载均衡器似乎没有添加/发送 X-Forwarded-For 参数,所以我找不到源 IP。我收到的标头参数如下:-

    cookie: AWSELB=09D969F91EF3C3604AB87D64987C7C54D857FED9A34F717D91F616079AC29E2AD67BDF984862A60ACA38A4EB6D54DC6257C08DB00AC6FE1F7F528DAC6C84D40EF4FCBC81AB
cache-control: no-cache
connection: Keep-Alive
accept-language: en-US,en;q=0.5
host: barebones-env.elasticbeanstalk.com
x-forwarded-port: 80
accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
x-forwarded-host: barebones-env.elasticbeanstalk.com
user-agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0
accept-encoding: gzip, deflate
x-forwarded-server: ip-10-58-127-10.eu-west-1.compute.internal
x-forwarded-proto: http
pragma: no-cache
IP Address from Controller =    //this is blank, it should be getting servletRequest.getHeader("X-FORWARDED-FOR");

创建新的弹性 beanstalk 环境后,我没有更改任何设置。有人有什么想法吗?

谢谢, 达米安

【问题讨论】:

    标签: amazon-web-services load-balancing amazon-elastic-beanstalk amazon-elb


    【解决方案1】:

    确实,负载均衡器通常会将带有自己 IP 地址的请求转发到其后面的服务器,客户端的 IP 地址在 X-Forwarded-For 标头中。但是,弹性负载均衡器似乎比这更透明一些。我不知道您使用的是哪种编程语言,但在我的 Java/Spring 环境中,我只需在我的HttpServletRequest 上调用getRemoteAddr() 就可以了。换句话说,我认为您根本不需要理会X-Forwarded-For 标头。

    祝你好运!

    【讨论】:

    • 我明白了!这与我们现有的负载均衡器的工作方式不同!但它完成了这项工作。谢谢。
    猜你喜欢
    • 2023-04-03
    • 2020-07-04
    • 1970-01-01
    • 2021-03-07
    • 2013-08-10
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 2017-07-28
    相关资源
    最近更新 更多