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
).
做到以上几点,就不用再玩重写页面内链接等游戏了
在我的 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
).
做到以上几点,就不用再玩重写页面内链接等游戏了