Glassfish 3.1.2.2在SSL终端负载均衡器后面

时间:2013-01-17 20:58:05

标签: ssl glassfish glassfish-3 load-balancing

我正在为之工作的组织目前正在Glassfish 3.1.2.2上运行一个应用程序,该应用程序位于硬件(与软件/云相同的问题)负载平衡器背后,负责 SSL终止 即可。我们目前遇到的问题是Glassfish不知道它是SSL连接背后的,因此不正确地生成某些东西。具体如下:

  • 会话cookie未标记为安全
  • 从Glassfish生成的重定向以http://而不是https://
  • 完成
  • request.isSecure()未返回正确的值
  • request.getScheme()未返回正确的值

理论上我们可以在负载均衡器中重写所有这些东西,但是在之前的项目中使用Tomcat并且能够在容器级别解决所有这些问题。

在Tomcat中,我可以在HTTP连接器定义上设置安全标志和方案值,一切都很好。但我似乎无法找到Glassfish的等价物。

任何人有任何想法吗?

1 个答案:

答案 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