我正在为之工作的组织目前正在Glassfish 3.1.2.2上运行一个应用程序,该应用程序位于硬件(与软件/云相同的问题)负载平衡器背后,负责 SSL终止 即可。我们目前遇到的问题是Glassfish不知道它是SSL连接背后的,因此不正确地生成某些东西。具体如下:
http://
而不是https://
request.isSecure()
未返回正确的值request.getScheme()
未返回正确的值理论上我们可以在负载均衡器中重写所有这些东西,但是在之前的项目中使用Tomcat并且能够在容器级别解决所有这些问题。
在Tomcat中,我可以在HTTP连接器定义上设置安全标志和方案值,一切都很好。但我似乎无法找到Glassfish的等价物。
任何人有任何想法吗?
答案 0 :(得分:3)
如果您的负载均衡器提供了X-Forwarded-Proto
标头,您可以尝试在scheme-mapping
的{{1}}定义中使用http
属性:
domain.xml
例如,可以将nginx配置为非常容易地提供此标头:
<http default-virtual-server="server"
max-connections="100"
scheme-mapping="X-Forwarded-Proto">...
看起来,glassfish有一些与location / {
proxy_set_header X-Forwarded-Proto https;
proxy_pass http://glassfish;
}
支持相关的known issues。