如何在 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
我试过将以下内容添加到我的 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