Apache2 代理反向断开 Tomcat8 链接

Apache2 proxy reverse broken Tomcat8 links

在我的 DigitalOcean vps 中,我有 Apache2 (LAMP)、phpmyadmin 和 Tomcat 8。一切都很好 运行。 现在我正在尝试实现反向代理,这样我就可以访问 tomcat8 而不是 https://mydominiam.com:8080 but by https://mydominiam.com/tomcat。阅读一些教程后,我可以在我的 /etc/apache2/sites-available/mydomain.com-ssl.conf:

中获取此代码
<VirtualHost *:443>
    ServerAdmin mydomain@mydomain.com
    ServerName mydomain.com
    ServerAlias www.mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    SSLEngine on
        SSLCertificateFile /home/user/ssl/mydomain.com.crt
        SSLCertificateKeyFile /home/user/ssl/mydomain.com.key
        SSLCertificateChainFile /home/user/ssl/intermediate.crt 
 # AJP configuration
 ProxyRequests Off
 ProxyPreserveHost On
 ProxyPass /tomcat ajp://mydomain.com:8009/
 ProxyPassReverse /tomcat ajp://mydomain.com:8009/
 ProxyPassReverseCookiePath / / 
</VirtualHost>

上面的代码是访问https://mydomain/tomcat时出现tomcat首页,但是链接失效

但是如果我更改代码:

 ProxyPass /tomcat ajp://mydomain.com:8009/
 ProxyPassReverse /tomcat ajp://mydomain.com:8009/

 ProxyPass / ajp://mydomain.com:8009/
 ProxyPassReverse / ajp://mydomain.com:8009/

tomcat 主页重新加载通常没有损坏的链接,但只能通过 url https://mydomain.com

我尝试按照 this 教程进行操作,但仍然失败。有人可以告诉我我做错了什么吗?

ProxyPass 与您尝试重写上下文路径的 Tomcat 应用程序一起使用(在上面的配置中,将 /tomcat 更改为 /),有您的应用程序可能会以多种方式中断。

最好使用这样的配置:

ProxyPass /tomcat ajp://mydomain.com:8009/tomcat
ProxyPassReverse /tomcat ajp://mydomain.com:8009/tomcat

现在,将您的应用程序部署为 /tomcat 而不是 ROOT 上下文。您可以通过将 WAR 文件从 ROOT.war 重命名为 tomcat.war(或将展开的 WAR 目录从 ROOT 重命名为 tomcat).

做到以上几点,就不用再玩重写页面内链接等游戏了