6

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

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

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

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

有人有任何想法吗?

4

1 回答 1

3

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

<http default-virtual-server="server"
      max-connections="100"
      scheme-mapping="X-Forwarded-Proto">...

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

location / {
    proxy_set_header X-Forwarded-Proto https;
    proxy_pass http://glassfish;
}

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

于 2013-12-28T09:52:15.190 回答