【问题标题】:How to redirect all HTTP request to HTTPS on glassfish如何将所有 HTTP 请求重定向到 glassfish 上的 HTTPS
【发布时间】:2017-02-13 16:12:44
【问题描述】:

我尝试将以下内容放在我的 web.conf 中

<security-constraint>
    <web-resource-collection>
        <web-resource-name>SecureResource</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee>
    </user-data-constraint>
</security-constraint>

但是当我发布时,我在 chrome 上看到“重定向过多”。

【问题讨论】:

    标签: java amazon-web-services glassfish amazon


    【解决方案1】:

    我假设您在 AWS 上的负载均衡器后面运行 Glassfish,并且 SSL 终止发生在负载均衡器上。

    您需要配置 Glassfish 以检查 x-forwarded-proto 标头以确定客户端是通过 HTTP 还是 HTTPS 连接。您可以通过 domain.xml 文件中的 scheme-mapping 参数执行此操作:

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

    或者,您可以在服务器上运行此命令来设置scheme-mapping 值:

    asadmin set server.network-config.protocols.protocol.http-listener-1.http.scheme-mapping=X-Forwarded-Proto
    

    【讨论】:

    • 这正是我想要做的。我的项目没有 domain.xml,如何生成一个?我正在使用netbeans。或者我可以在 web-inf 下创建一个“domain.xml”并将其粘贴到那里吗?
    • 我好多年没用过Glassfish了,不过我觉得domain.xml文件是服务器配置文件,不是项目文件。您需要通过 SSH 连接到您的 EC2 服务器并在那里更新文件。另请参阅我对另一种设置方式的更新。
    • 谢谢,再试一个问题,在我设法更改 domain.xml 之后,我仍然需要我最初发布的 web.conf 上的那段代码吗?
    • 是的,更新只是告诉 Glassfish 如何确定客户端是否通过 HTTPS 连接。您仍然需要更改之前的配置才能告诉 Glassfish HTTPS 是必需的。
    • 如果您没有 SSH 密钥,我很好奇您如何将项目部署到服务器上的 Glassfish。您在使用 Elastic Beanstalk 吗?如果是这样,您应该在 Beanstalk 配置中配置一个容器命令来运行 asadmin 命令。
    猜你喜欢
    • 2011-05-04
    • 2016-11-17
    • 2015-01-28
    • 2014-06-30
    • 2016-07-06
    • 2017-04-30
    • 2019-10-21
    相关资源
    最近更新 更多