gpt4 book ai didi

java - Spring pageContext.request.contextPath,Apache 后面的 Tomcat 作为反向代理

转载 作者:行者123 更新时间:2023-11-28 22:15:34 24 4
gpt4 key购买 nike

我在安装了 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>

现在,我尝试在我的 jsp 文件中使用 ${pageContext.request.contextPath} 来获取正确的链接和资源路径。

当我从 IDE 运行时,它返回 /myapp,这很好。

当在 mydom.com 上运行时,它返回 /myapp,这是不好的。我需要一个空字符串或 /

我如何配置才能为 ${pageContext.request.contextPath} 获取正确的值?

最佳答案

更改您的映射:

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 管理员精神错乱的第一大原因。只是不要这样做。

如果您希望您的应用程序在 / 上可用,请执行以下操作之一:

  1. 重定向 //myapp/ 并使用我上面重写的映射
  2. 在 Tomcat 端将您的应用程序从 /myapp/ 重命名为 / 并修复您的映射以映射 / -> /

任何其他配置都将是创可贴、修复和创可贴到修复的无休止循环,您将不得不应用它们。

关于java - Spring pageContext.request.contextPath,Apache 后面的 Tomcat 作为反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57091435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com