首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >辅助ajp工作程序不能在apache和tomcat之间工作

辅助ajp工作程序不能在apache和tomcat之间工作
EN

Stack Overflow用户
提问于 2011-10-26 09:33:40
回答 2查看 7.3K关注 0票数 3

我已经让它工作了几个月了,但是今天我的电源循环了,有些东西坏了。对不起,这有点详细和具体,但我迫切需要帮助。

我有apache-2.2和两个tomcat-6服务器(仅从两个单独的文件夹运行)。我没有任何http连接器,但是我有一个ajp连接器在每个服务器的端口8009和8010上运行。在启动时,两个tomcats都报告连接器正在运行,似乎没有任何问题:

代码语言:javascript
运行
复制
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),它会说:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
# 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 (预计会出现错误):

代码语言:javascript
运行
复制
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,但没有任何变化。谢谢你看一看。

编辑-1:快速更新到此...我添加了一个http连接器,它工作得很好,但是ajp连接器仍然失败。

EDIT-2:这里是每个请求的配置详细信息...

workers.properties:

代码语言:javascript
运行
复制
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 ...大写有关系吗?):

代码语言:javascript
运行
复制
JkMount /s1 service1
JkMount /s1/* service1

JkMount /s2 service2
JkMount /s2/* service2

用于service1的server.xml:

代码语言:javascript
运行
复制
<Connector port="8009" protocol="AJP/1.3" />

用于service2的server.xml:

代码语言:javascript
运行
复制
<Connector port="8010" protocol="AJP/1.3" />

我想就是这样了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-22 03:40:34

你的系统上有SELinux吗?你能不能试试:

代码语言:javascript
运行
复制
setenforce 0

它可能会阻止apache进程连接。此外,请检查您的防火墙规则...

票数 5
EN

Stack Overflow用户

发布于 2013-04-23 15:15:57

默认情况下,selinux会打开8009,您可以打开更多的端口来使用。

goalin@centos63日志$ sudo semanage端口-l |grep8009

http_port_t tcp 80、443、488、8008、8009、8443

goalin@centos63日志$ sudo semanage port -a -t http_port_t -p tcp 18009

goalin@centos63日志$ sudo semanage port -a -t http_port_t -p tcp 28009

goalin@centos63日志$ sudo semanage端口-l |grep8009

http_port_t tcp 28009、18009、80、443、488、8008、8009、8443

goalin@centos63日志$

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7897795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档