Apache 登录到应用程序时主机名正在更改

Apache 登录到应用程序时主机名正在更改,apache,ssl,grails,spring-security,Apache,Ssl,Grails,Spring Security,我有一个使用spring安全插件的grails应用程序。该应用程序托管在Tomcat中,带有一个面向HTTPD的接口。我正在使用以下设置强制HTTPS: Tomcat中的server.xml <Valve className="org.apache.catalina.valves.RemoteIpValve" internalProxies=".*" protocolHeader="X-Forwarded-Proto" httpsServerPort="443"

我有一个使用spring安全插件的grails应用程序。该应用程序托管在Tomcat中,带有一个面向HTTPD的接口。我正在使用以下设置强制HTTPS:

Tomcat中的server.xml

<Valve
   className="org.apache.catalina.valves.RemoteIpValve"
   internalProxies=".*"
   protocolHeader="X-Forwarded-Proto"
   httpsServerPort="443"
   />
问题

我可以通过
http://my.server.com/myapp
(重定向到HTTPS)。然而,问题是当我尝试登录时——在提交用户名/密码并单击提交时,我被重定向到:
https://localhost/myapp/login/authfail?login_error=1
(注意主机名已从
my.server.com
更改为
localhost
)。这发生在成功或不成功的登录上

同样的问题在
注销时也会发生。点击
https://my.server.com/myapp/logout
转到
https://localhost/myapp/logout

下面是跟踪网络呼叫的屏幕截图


看看这个:我在搜索过程中确实遇到了这个问题。如果您注意到,我的grails设置与回答中提到的完全相同(大写字母
X-forwarded-proto
除外,但这不重要)。进行这些更改对我没有帮助您是否在grails.serverURL中设置了正确的值?请检查:我在搜索过程中确实遇到了这个问题。如果您注意到,我的grails设置与回答中提到的完全相同(大写字母
X-forwarded-proto
除外,但这不重要)。进行这些更改对我没有帮助您是否在grails.serverURL中设置了正确的值?
<Location /myapp>
  RewriteEngine On
  RewriteCond %{HTTPS} !=on
  RewriteRule ^/?(.*) https://my.server.com/myapp [R,L]
</Location>
<Location /myapp>
ProxyPass http://localhost:9090/myapp
ProxyPassReverse http://localhost:9090/myapp
        RequestHeader unset X-Forwarded-Proto
        RequestHeader add X-Forwarded-Proto "https"
</Location>
grails.plugin.springsecurity.secureChannel.definition = [ '/**': 'REQUIRES_SECURE_CHANNEL' ]
grails.plugin.springsecurity.secureChannel.useHeaderCheckChannelSecurity = true
grails.plugin.springsecurity.auth.forceHttps = true
grails.plugin.springsecurity.portMapper.httpPort = 80
grails.plugin.springsecurity.portMapper.httpsPort = 443
grails.plugin.springsecurity.secureChannel.secureHeaderName = 'X-FORWARDED-PROTO'
grails.plugin.springsecurity.secureChannel.secureHeaderValue = 'http'
grails.plugin.springsecurity.secureChannel.insecureHeaderName = 'X-FORWARDED-PROTO'
grails.plugin.springsecurity.secureChannel.insecureHeaderValue = 'https'