Apache与Tomcat AJP端口连接失败(errno=13)问题排查咨询
问题排查与解决方案
先抓核心线索:日志里的errno=13对应的是Permission denied(权限被拒绝),结合你的Apache+Tomcat AJP配置场景,主要从这几个方向入手排查:
1. SELinux 拦截(最常见原因)
Linux系统的SELinux默认会限制Apache(httpd)进程连接非标准端口。AJP默认的8009端口是被SELinux允许的,但你自定义的1983不在允许列表里,所以直接被拦了。
验证与解决:
- 先临时关闭SELinux测试(仅用来确认问题):
之后再发起请求,如果能正常连接,那肯定是SELinux的锅。setenforce 0 - 永久把1983端口加入SELinux允许列表:
执行完重启Apache服务就生效了。semanage port -a -t http_port_t -p tcp 1983
2. 确认Tomcat的AJP端口真在监听
日志里提示Tomcat可能没启动或端口不对,先在Tomcat服务器上确认端口状态:
ss -tulpn | grep 1983
如果看不到java进程监听0.0.0.0:1983,那说明Tomcat的AJP配置没生效:
- 检查
server.xml里的AJP Connector配置,确保没被注释,且address="0.0.0.0"允许外部访问; - 重启Tomcat让配置生效。
3. 防火墙/安全组检查
虽然errno=13不是典型的防火墙拒绝(通常防火墙拒接是errno=113),但还是要确认Apache服务器能通Tomcat的1983端口:
在Apache服务器上跑个telnet测试:
telnet serapp.abcapp.com 1983
如果连不上,检查Tomcat服务器的防火墙(firewalld/iptables)或者云安全组,是否给Apache服务器的IP开放了1983端口。
4. 额外小检查
- 确认
worker.properties的权限:Apache进程(一般是apache或httpd用户)得能读这个文件,设置成644就没问题; - 有些Tomcat版本默认会注释掉AJP Connector,再检查下
server.xml里的配置是不是真的启用了。
内容的提问来源于stack exchange,提问作者Java-Seekar
相关产品推荐
相关产品推荐

