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就可以了,所以
我更改了如下规则。
RewriteRule 上的 RewriteEngine ^/(.*)$ ajp://internal-elb-xxxxxxxxxxxxxx.ap-northeast-1.elb.amazonaws.com:8009/$1 [P,L]
使用重写规则。
作为重写,规则是如果涉及到所有内容,就将其扔给ajp。
现在您可以安全地将 Apache 请求发送到 Tomcat(内部 ELB)。
如果您觉得这篇文章有帮助,请点赞!