Spring pageContext.request.contextPath

我在安装了 Tomcat 服务器的远程服务器上运行一个 Spring 应用程序,它可以通过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.comreturn /myapp,这不好。我需要得到一个空字符串或/.


我如何配置以获得正确的价值${pageContext.request.contextPath}?


达令说
浏览 127回答 1
1回答

catspeake

更改您的映射: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/并使用我上面重写的映射在 Tomcat 端将您的应用程序从 重命名为/myapp/并将您的映射修复为 map&nbsp;->///任何其他配置都将是创可贴、修复和创可贴到修复的无休止循环,您将不得不应用它们。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java