我有一台具有 root 访问权限的服务器。
该服务器托管一个 Java Web 应用程序、servlet 容器 Tomcat。Nginx
是 Apache 的反向代理。Apache
是 Tomcat 的反向代理。
单个 Tomcat 节点 Apache 代理配置为:
ProxyRequests Off
ProxyPass / http://127.0.0.1:5881/
ProxyPassReverse / http://127.0.0.1:5881/
ProxyPreserveHost On
并且这工作正常,所有请求都得到处理且没有错误。
我添加了额外的 Tomcat 节点,端口 5882,并且可以成功向 servlet 容器节点发出 http 请求,返回 200。
我将 Apache 配置更改为:
<Proxy balancer://vcluster>
BalancerMember http://127.0.0.1:5881/
BalancerMember http://127.0.0.1:5882/
ProxySet lbmethod=byrequests
</Proxy>
ProxyRequests Off
ProxyPass / balancer://vcluster/
ProxyPassReverse / balancer://vcluster/
ProxyPreserveHost On
对 Apache 服务器的请求现在返回 503 网关错误。访问日志条目:
xxxx - - [17/May/2018:14:12:51 +0000] "GET / HTTP/1.0" 503 871 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/5 (KHTML,如 Gecko) Chrome/ Safari/"
apache 日志中没有错误。
仅允许 HTTPS 上的请求 - HTTP 重定向到 HTTPS(配置更改后重定向仍然有效)。Tomcat 仅支持 HTTP,未配置 HTTPS。
同一 Ubuntu 16.04 服务器上的 Apache、Nginx 和所有 Tomcat 节点。
安装并启用所有必需的 apache2 模块:proxy_balancer proxy_http lbmethod_byrequests
您是否发现我所执行的操作中存在任何错误,可能导致此负载平衡代理更改返回 503 网关错误?您能建议另一种实现相同目标的方法吗?
任何帮助是极大的赞赏。