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

kal*_*451 6 ssl load-balancing glassfish glassfish-3

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

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

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

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

任何人有任何想法?

vbo*_*vbo 3

如果您的负载均衡器提供标头,您可以尝试在定义中X-Forwarded-Proto使用scheme-mapping属性:httpdomain.xml

<http default-virtual-server="server"
      max-connections="100"
      scheme-mapping="X-Forwarded-Proto">...
Run Code Online (Sandbox Code Playgroud)

例如,nginx 可以很容易地配置为提供此标头:

location / {
    proxy_set_header X-Forwarded-Proto https;
    proxy_pass http://glassfish;
}
Run Code Online (Sandbox Code Playgroud)

看起来 glassfish 有一些与支持相关的已知问题scheme-mapping