我在安装了 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}?
1 回答
catspeake
TA贡献1111条经验 获得超0个赞
更改您的映射:
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 ->/
/
/
任何其他配置都将是创可贴、修复和创可贴到修复的无休止循环,您将不得不应用它们。
添加回答
举报
0/150
提交
取消