我的 tomcat 中有一个 Java Web 应用程序,我将 Apache2 HTTP 作为我的反向代理。 事实上,我已经做了一个(相当)好的重定向,但我想让它变得更好。
重定向到我的 tomcat 网络应用程序的虚拟主机设置如下所示
<VirtualHost *:443>
ServerAdmin myuseracc@gmail.com
ServerName mywebapp.mydomain.com
ProxyRequests off
ProxyPreserveHost on
ErrorLog /usr/log/tomcat/tomcat.error.log
CustomLog /usr/log/tomcat/tomcat.log combined
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / ajp://localhost:8009/MyWebApp
ProxyPassReverse / ajp://localhost:8009/MyWebApp
Redirect / /MyWebApp
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
</VirtualHost>
通过上述设置,我可以通过键入以下内容访问我的网络应用程序: https://mywebapp.mydomain.com 完美。
唯一的问题是:当我的应用程序在浏览器上呈现时,我可以看到路径变成了这样: <强> https://mywebapp.mydomain.com/MyWebApp/view/home.action
无论如何我可以让它变成: <强> https://mywebapp.mydomain.com/view/home.action
不公开我在 tomcat 中的应用程序文件夹,即 MyWebApp ?
最佳答案
看看以下内容是否有帮助。我以前用过它:
ProxyPass /MyWebApp/ ajp://localhost:8009/
ProxyPassReverse /MyWebApp/ ajp://localhost:8009/
<Location /MyWebApp/>
ProxyPassReverse /
</Location>
看起来上面的方法不起作用。我认为您拥有的 Redirect 指令会处理它。您可以尝试以下操作吗?
RewriteEngine on
RewriteRule ^(/.*) ajp://localhost:8009/MyWebApp/$1 [P]
ProxyPass /MyWebApp/ /
ProxyPassReverse /MyWebApp/ /
<Location /MyWebApp/>
ProxyPassReverse /
</Location>
关于Apache 2 Tomcat 虚拟主机重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20876373/