【问题标题】:Glassfish 3.1.2.2 behind an SSL terminating load balancerGlassfish 3.1.2.2 在 SSL 终止负载均衡器后面
【发布时间】:2013-01-17 20:58:04
【问题描述】:

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

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

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

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

有人有什么想法吗?

【问题讨论】:

  • 这个负载均衡器在向 glassfish 传递请求时是否提供 X-Forwarded-Proto 标头?
  • @vbo 我正在使用的那个目前没有能力(我不知道 OP)。但我很想知道如何做到这一点。

标签: ssl glassfish glassfish-3 load-balancing


【解决方案1】:

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

<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 相关的known issues 支持。

【讨论】:

    猜你喜欢
    • 2021-04-25
    • 2016-06-04
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多