tomcat与Apache 2.4集成时使用内部ELB时,出现“太长”错误

我叫伊藤,是一名基础设施工程师。
我认为常见的AWS服务器配置是这样的:Web服务器接收访问请求,并将请求代理到其后面的应用服务器
在这种情况下,如果考虑可用性,最好让每台服务器都具备冗余性。
因此,配置方式如下。

我认为常见的配置是使用 Apache 作为 Web 服务器,使用 Tomcat 作为应用服务器
所以,当 Apache 将任务转发给 Tomcat 时,我遇到了一个问题,我想把解决方案留在这里。
我被 ProxyPass 设置卡住了。
在 Apache 虚拟主机中编写一条语句,将接收到的请求路由到 Tomcat。
ProxyPass / ajp://internal-elb-xxxxxxxxxxxxxx.ap-northeast-1.elb.amazonaws.com:8009/
使用 ProxyPass,访问请求会发送到 ajp 的 8009 端口。
“internal-elb-~~”表示内部 ELB。
但是,如果在此状态下对 Apache 运行语法检查,则会输出以下错误:
# httpd -t ProxyPass 工作进程主机名 (internal-elb-xxxxxxxxxxxxxx.ap-northeast-1.elb.amazonaws.com) 过长
发送给 ProxyPass 的主机名太长了……
即使有人告诉我这一点,内部 ELB 主机名看起来是这样的,而且 IP 地址也不是固定的,那我该怎么办
?!
重写规则
在此配置下,使用 ProxyPass 直接向 Tomcat 发送请求是可以的,所以
我将规则更改为如下。
RewriteEngine on RewriteRule ^/(.*)$ ajp://internal-elb-xxxxxxxxxxxxxx.ap-northeast-1.elb.amazonaws.com:8009/$1 [P,L]
我们使用重写规则。
该重写规则是将所有消息都转发到 ajp。
现在 Apache 请求可以成功发送到 Tomcat(内部 ELB)。
如果您觉得这篇文章有帮助,请点赞!
0