当使用集成 Apache 2.4 和 Tomcat 的内部 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
