我目前正在测试我们的webapps在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环境后,我没有更改任何设置。有没有人有任何想法?
谢谢, 达米安
答案 0 :(得分:0)
负载均衡器通常会将具有自己IP地址的请求转发到其后面的服务器,并将客户端的IP转发到X-Forwarded-For
标头中。但是,Elastic Load Balancer似乎比那更透明。我不知道你正在使用什么编程语言,但是在我的Java / Spring环境中,通过调用getRemoteAddr()
上的HttpServletRequest
,我就可以了。换句话说,我认为您根本不需要使用X-Forwarded-For
标题。
祝你好运!