我在安装了Tomcat服务器的远程服务器上运行Spring App,该服务器可以通过https://mydom.com:8080/myapp
访问我的应用。
为了使我的应用可以通过https://mydom.com
访问,我安装了Apache,并将其配置为反向代理。
这是配置:
<VirtualHost _default_:443>
SSLEngine On
SSLCertificateFile /opt/ssl/mydom_com.crt
SSLCertificateKeyFile /opt/ssl/mydom_com.key
SSLCertificateChainFile /opt/ssl/mydom_com.ca-bundle
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
ServerName mydom.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/myapp/
ProxyPassReverse / http://127.0.0.1:8080/myapp/
ProxyPassReverseCookiePath /myapp /
</VirtualHost>
现在,我尝试在${pageContext.request.contextPath}
文件中使用jsp
来获取正确的链接和资源路径。
当我从IDE运行时,它返回/myapp
,这很好。
在mydom.com
上运行时,它返回/myapp
,这不好。我需要输入一个空字符串或/
。
如何配置以获取${pageContext.request.contextPath}
的正确值?
答案 0 :(得分:1)
从以下位置更改映射:
ProxyPass / http://127.0.0.1:8080/myapp/
ProxyPassReverse / http://127.0.0.1:8080/myapp/
ProxyPassReverseCookiePath /myapp /
收件人:
ProxyPass /myapp/ http://127.0.0.1:8080/myapp/
ProxyPassReverse /myapp/ http://127.0.0.1:8080/myapp/
您的所有问题都将得到解决。
尝试在代理中重写上下文路径是Tomcat管理员精神错乱的第一大原因。只是不要这样做。
如果您希望您的应用程序在/
上可用,请执行以下操作之一:
/
重定向到/myapp/
并使用我上面重写的映射/myapp/
重命名为/
,并修复您的映射以映射到/
-> /
任何其他配置将是您将要应用的创可贴,修复和创可贴修复的无休止循环。