当使用集成 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
加载中...
0票,平均分:0.00/10
5,321
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者