我在安裝了 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
提交
取消