Apache反向代理间歇性错误113 – 没有路由到主机

我在CentOS 4上安装了Apache 2.0.52服务器,前端安装了几个App服务器(Jetty和Tomcat的混合)。 Apache有一些像这样configuration的虚拟主机:

<VirtualHost www1.example.com:443> ServerName www1.example.com DocumentRoot "/mnt/app_web/html" SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt SSLCertificateChainFile /etc/httpd/conf/ssl.crt/chain.crt SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0 RewriteEngine on RewriteRule ^/app1/(.*)$ http://app1.example.com:8080/app1/$1 [P,L] RewriteRule ^/app2/(.*)$ http://app2.example.com:8080/app2/$1 [P,L] </VirtualHost> 

但是,我间歇性地在日志中收到以下错误:

 [Fri Dec 04 07:19:41 2009] [error] (113)No route to host: proxy: HTTP: attempt to connect to 10.0.0.1:8080 (app1.example.com) failed 

我最初试图closuresIPv6,这似乎在很大程度上治愈它,但我仍然零星的这些消息爆发。

另外,我们在同一个前端运行memcache,并且在Apache日志中收到这些消息的时候,下面的命令不起作用:

 echo stats | nc 127.0.0.1 11211 

没有消息打印,但打印的数据也不是。 我完全失去了如何解决这个问题。 =(

要解决这个问题,你需要在你的App服务器的'iptables'中添加规则。 对于Red Hat Enterprise,文件是'/ etc / sysconfig / iptables'。 CentOS应该是一样的。

你可能有一个或多个接受来自前端的NEW连接的规则,如下所示:

-A RH-Firewall-1-INPUT -m状态–state新-m tcp -p tcp -s '前端的IP'– dport '端口号' -j ACCEPT

要么

-A RH-Firewall-1-INPUT -m状态 – 状态新-m多端口-m tcp -p tcp -s '前端的IP ' – 端口'端口号' -j ACCEPT

你的问题应该通过添加规则,发送一个tcp-reset到通过前置规则的每个SYN数据包的前端。 规则应该看起来像这样:

-A RH-Firewall-1-INPUT -m tcp -p tcp -s '前端的IP'– dport '端口号' –syn -j REJECT –reject-with tcp-reset

要么

-A RH-Firewall-1-INPUT -m多端口-m tcp -p tcp -s '前端的IP ' – 端口'端口号' –syn -j REJECT –reject-with tcp-reset

在规则如下所示之前,在“iptables”的末尾添加规则:

-A RH-Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited

祝你好运。

保罗

我有这个问题(113 – 没有路由到主机)在CentOS 6.5与Apache 2.2,虽然它只是间歇性的 – 大约每20分钟。 我怀疑这是与你的问题有关,但这可能有助于某人。

我使用Wireshark捕获了两端的networkingstream量,并发现响应来自反向代理服务器的SYN数据包,App服务器有时会返回ICMP主机pipe理禁止的数据包。 但是,SYN的大部分时间都被接受。

基于Paul的回答,我检查了iptables的规则 – 实际上规则当然是可以接受8009端口上的NEW连接的。

我决定用命令重置iptables:

 service iptables restart 

重新启动iptables后,'113 – 没有路由到主机'的问题已经完全消失。