我已经工作了好几个月,但今天我有一个电源循环,有些东西坏了。对不起,这有点详细和具体,但我迫切需要帮助。
我有apache-2.2和两个tomcat-6服务器(只需从两个单独的文件夹运行)。我没有任何http连接器,但我在端口8009和8010上的每个服务器上运行一个ajp连接器。启动时,两个tomcats报告连接器正在运行,似乎没有任何问题:
INFO: JK: ajp13 listening on /0.0.0.0:8009
...
INFO: JK: ajp13 listening on /0.0.0.0:8010
我有理由确定我的工作人员和apache配置设置正确。我可以在8009上很好地连接到连接器,没有任何问题,但是当我尝试8010 apache给我一个503.检查日志(mod_jk.log)它说:
jk_open_socket::jk_connect.c (594): connect to 127.0.0.1:8010 failed (errno=13)
ajp_connect_to_endpoint::jk_ajp_common.c (922): Failed opening socket to (127.0.0.1:8010) (errno=13)
ajp_send_request::jk_ajp_common.c (1507): (eis) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=13)
但我无法理解的是,如果我对该端口进行简单的telnet并发送GET:
# telnet 127.0.0.1 8010
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
GET
Connection closed by foreign host.
它命中正确的tomcat(错误是预期的):
Oct 25, 2011 6:17:10 PM org.apache.jk.common.MsgAjp processHeader
SEVERE: BAD packet signature 18245
Oct 25, 2011 6:17:10 PM org.apache.jk.common.ChannelSocket processConnection
SEVERE: Error, processing connection
那为什么不能达到apache呢?无论我是否是超级用户,telnet都能正常工作。会发生什么事?我完全难过了。
我尝试重新启动apache和tomcat,没有任何变化。谢谢你看看。
EDIT-1:快速更新到此...我添加了一个http连接器,它工作正常,但ajp连接器仍然失败。
EDIT-2:以下是每个请求的配置详细信息......
workers.properties:
worker.list=service1,service2
worker.service1.type=ajp13
worker.service1.host=127.0.0.1
worker.service1.port=8009
worker.service2.type=ajp13
worker.service2.host=127.0.0.1
worker.service2.port=8010
httpd.conf(我看到jkmount和JkMount ......确实是重要的吗?):
JkMount /s1 service1
JkMount /s1/* service1
JkMount /s2 service2
JkMount /s2/* service2
service1的server.xml:
<Connector port="8009" protocol="AJP/1.3" />
service2 for server2:
<Connector port="8010" protocol="AJP/1.3" />
我认为就是这样。
答案 0 :(得分:5)
你的系统上有SELinux吗?你能尝试一下:
setenforce 0
可能会阻止apache进程连接。另外,检查防火墙规则......
答案 1 :(得分:0)
默认情况下,selinux会打开8009,您可以打开更多端口来使用。
[goalin @ centos63 logs] $ sudo semanage port -l | grep 8009
http_port_t tcp 80,443,488,8008,8009,8443
[goalin @ centos63 logs] $ sudo semanage port -a -t http_port_t -p tcp 18009
[goalin @ centos63 logs] $ sudo semanage port -a -t http_port_t -p tcp 28009
[goalin @ centos63 logs] $ sudo semanage port -l | grep 8009
http_port_t tcp 28009,18009,80,443,488,8008,8009,8443
[goalin @ centos63 logs] $