如何在 glassfish 上将所有 HTTP 请求重定向到 HTTPS

How to redirect all HTTP request to HTTPS on glassfish

我试过将以下内容添加到我的 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 上获得了 "Too many redirects"。

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

您需要配置 Glassfish 以检查 x-forwarded-proto header 以确定客户端是通过 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