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
加载中...
0 票,平均:0.00 / 10
5,181
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者