Apache httpd.conf 重定向。如何“平衡”应用程序

Apache httpd.conf 重定向。如何“平衡”应用程序

这可能是一个简单的问题,但我似乎无法解决它!我有一个网站在不同的端口(例如 8080、8085)上运行 2 个 Apache Tomcat。但是,由于我的客户无法访问特定端口(他们的防火墙阻止了这一点),他们只能从端口 80 访问我的机器。

因此我让以下重定向起作用:

aServer.com/App1 redirects to aServer.com:8080/App1
aServer.com/App2 redirects to aServer.com:8085/App2

使用以下 httpd.conf 文件:

<VirtualHost *:80>
    ProxyPass        /App1 http://<server ip address>:8080/App1
    ProxyPassReverse /App1 http://<server ip address>:8080/App1
    ProxyPass        /App2 http://<server ip address>:8085/App2
    ProxyPassReverse /App2 http://<server ip address>:8085/App2
</VirtualHost>

但是,如果我想在 Tomcat 中将应用程序部署为 ROOT webapp,则无法使重定向正常工作。我将 httpd.conf 修改为:

    ProxyPass        /App2 http://<server ip address>:8085
    ProxyPassReverse /App2 http://<server ip address>:8085

现在仅返回 index.html 页面,并且网页中的每个依赖项(例如 tomcat.css、tomcat.png)都会导致未找到错误( NetworkError: 404 Not Found - http://myServer/tomcat.css

谁能解释我做错了什么?

谢谢,

菲尔

答案1

除非您的应用程序明确支持代理,否则通常需要将代理路径与上下文路径进行匹配。

http://myserver/tomcat.css是一个将尝试在您的 Apache 文档根目录上实现的请求,因为/未代理到 Tomcat。您需要执行以下任一操作(选项范围从安全到惰性):

  • 将 Apache 根目录代理到 Tomcat 根目录,
    如果你不打算在同一个容器中运行这两个应用程序,请确保以正确的顺序放置 ProxyPass 指令

  • 修改 Tomcat 中的原始index.html页面,以考虑代理引起的路径变化,
    每次重新部署时,您都必须重做此操作。

  • 为代理路径中的所有资源提供重写
    每次重新部署改变所需资源时,您都必须重做此操作。

相关内容