Apache2代理反向破坏了Tomcat8链接

时间:2016-03-23 02:01:23

标签: apache tomcat reverse-proxy

在我的DigitalOcean vps中,我有Apache2(LAMP),phpmyadmin和Tomcat 8.一切运行良好。 现在我正在尝试实现反向代理,因此我可以通过https://mydominiam.com:8080而不是https://mydominiam.com/tomcat来访问tomcat8。阅读完一些教程后,我可以在/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主页重新加载通常没有损坏的链接,但只能通过网址https://mydomain.com

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

1 个答案:

答案 0 :(得分:0)

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)来轻松完成此操作。

如果您执行上述操作,则无需在页面内重写链接等任何游戏。