我在 Nginx 代理后面的 Tomcat 中运行 Grails 2.5.5 应用程序 (https://github.com/jwilder/nginx-proxy)
nginx 配置了 HTTP 和 HTTPS,但将所有内容重定向到 HTTPS 并发送 Strict-Transport-Security header 。
我有一个问题,即使我通过 HTTPS 调用我的应用程序也是如此
我从 Grails 应用程序以 HTTP 方式重定向到登录页面:
我尝试配置 grails.serverURL 但没有任何区别。
为什么 Grails/Spring Security 不停留在 HTTPS 上或无法识别我已经通过 HTTPS 调用应用程序?
最佳答案
我发现了问题,并且能够通过在 tomcat server.xml
中配置 org.apache.catalina.valves.RemoteIpValve
来解决它:
<Valve className="org.apache.catalina.valves.RemoteIpValve"
internalProxies="172\.18\..*"
remoteIpHeader="x-forwarded-for" proxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto" />
通过这种方式,tomcat 可以正确检测到远程 IP 是什么、使用什么方案以及请求是否安全。
关于tomcat - Grails 中的 Spring Security 重定向到 HTTP 登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42214407/