使用Ubuntu 13.10 Apache 2.2 通过 AJP 整合 Tomcat 7中的方法配置了通过AJP
协议来通过Apache
进行访问的代理。
但是最近发现Tomcat
有时候会崩溃掉。刚刚开始以为是正常的OOM
,后来分析日志,并没有找到相关的记录,反倒是发现如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Jan 26, 2016 5:06:47 PM org.apache.coyote.ajp.AjpMessage processHeader SEVERE: Invalid message received with signature 18245 Jan 26, 2016 5:06:48 PM org.apache.coyote.ajp.AjpMessage processHeader SEVERE: Invalid message received with signature 5635 Jan 26, 2016 5:06:48 PM org.apache.coyote.ajp.AjpMessage processHeader SEVERE: Invalid message received with signature 18245 Jan 26, 2016 5:06:48 PM org.apache.coyote.ajp.AjpMessage processHeader SEVERE: Invalid message received with signature 3338 Jan 26, 2016 5:06:48 PM org.apache.coyote.ajp.AjpMessage processHeader SEVERE: Invalid message received with signature 20304 Jan 26, 2016 5:06:48 PM org.apache.coyote.ajp.AjpMessage processHeader SEVERE: Invalid message received with signature 20304 Jan 26, 2016 5:06:48 PM org.apache.coyote.ajp.AjpMessage processHeader SEVERE: Invalid message received with signature 32768 Jan 26, 2016 5:06:48 PM org.apache.coyote.ajp.AjpMessage processHeader SEVERE: Invalid message received with signature 30 |
于是感觉有些奇怪,因为AJP
协议应该不会发生非常频繁的通信协议错误问题。结果尝试从外网连接Tomcat
的Ajp
端口8009
,发现竟然可以通过telnet
连接成功!!说明端口意外暴露给了外网。
那么根据The AJP Connector中的介绍说明(注意address
部分),如果没有指定IP
地址的话,默认是绑定任意地址,这样就导致外网也可以访问这个端口。因此出于安全考虑,我们需要增加这个address
的设置,并且绑定到127.0.0.1
。最终结果如下:
1 2 |
<!-- Define an AJP 1.3 Connector on port 8009 --> <Connector port="8009" protocol="AJP/1.3" address="127.0.0.1" redirectPort="8443" /> |
而我在配置的时候,恰恰少设置了address="127.0.0.1"
.这个这种错误有些低级啊。
请问 address的地址是写服务器的地址还是 127.0.0.0?
请问 address的地址是写服务器的地址 还是必须要携程127.0.0.0呢?
必须是 127.0.0.1 这个地址只能本机自己访问。