对于Tomcat 8,Httpd返回503 Service Unavailable with mod_proxy

时间:2014-09-03 12:35:01

标签: apache tomcat

我试图将Tomcat与Apache集成。我的目标是重定向所有请求 http://localhost/myapphttp://localhost:8080

我遵循了这个指南:http://tomcat.apache.org/tomcat-8.0-doc/proxy-howto.html

我的httpd.conf看起来像这样:

Include conf.modules.d/*.conf
LoadModule proxy_module  modules/mod_proxy.so

ProxyPass         /myapp  http://localhost:8080 retry=0 timeout=5
ProxyPassReverse  /myapp  http://localhost:8080

apache-tomcat中的我的server.xml如下所示:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" proxyPort="80" />

现在,当我尝试使用网址http://localhost/myapp时,会出现503 Service Unavailable错误。

Tomcat和Apache都已启动并正在运行。网址http://localhost:8080运行正常。

文件权限是否存在问题?

对于tomcat,用户和群组为root/root,而对于httpd,用户和群组为apache/apache

我错过了什么或者我做错了吗?

Httpd版本为2.4.6,Tomcat版本为8.0

httpd错误记录:

[proxy:error] [pid 19905] (13)Permission denied: AH00957: HTTP: attempt to connect to 127.0.0.1:8080 (localhost) failed

[proxy:error] [pid 19905] AH00959: ap_proxy_connect_backend disabling worker for (localhost) for 0s

[proxy_http:error] [pid 19905] [client ::1:51615] AH01114: HTTP: failed to make connection to backend: localhost

解决!

答案在这里:http://sysadminsjourney.com/content/2010/02/01/apache-modproxy-error-13permission-denied-error-rhel/

4 个答案:

答案 0 :(得分:101)

(在问题编辑中由OP回答。转换为社区维基答案。请参阅Question with no answers, but issue solved in the comments (or extended in chat)

OP写道:

  

答案在这里:http://sysadminsjourney.com/content/2010/02/01/apache-modproxy-error-13permission-denied-error-rhel/

这是指向博客的链接:

  

默认情况下,RHEL / CentOS上的SELinux发布,因此httpd进程无法启动出站连接,这正是mod_proxy尝试执行的操作。

如果这是问题,可以通过运行来解决:

 /usr/sbin/setsebool -P httpd_can_network_connect 1

有关更明确的信息来源,请参阅https://wiki.apache.org/httpd/13PermissionDenied

答案 1 :(得分:5)

这对我有用:

ProxyRequests     Off
ProxyPreserveHost On
RewriteEngine On

<Proxy http://localhost:8123>
Order deny,allow
Allow from all
</Proxy>

ProxyPass         /node  http://localhost:8123  
ProxyPassReverse  /node  http://localhost:8123

答案 2 :(得分:2)

立即解决问题,这与内部安全性有关

我们为企业linux RedHat工作的SnippetBucket.com发现httpd服务器不允许运行代理,本地主机或127.0.0.1均不允许运行,也不允许任何其他外部域运行。

在服务器日志中进行调查

[error] (13)Permission denied: proxy: AJP: attempt to connect to
   10.x.x.x:8069 (virtualhost.virtualdomain.com) failed

审核日志发现类似的端口问题

type=AVC msg=audit(1265039669.305:14): avc:  denied  { name_connect } for  pid=4343 comm="httpd" dest=8069 
scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:port_t:s0 tclass=tcp_socket

由于linux的内部默认安全性,因此导致此问题现已修复(临时)

 /usr/sbin/setsebool httpd_can_network_connect 1

解决永久性问题

/usr/sbin/setsebool -P httpd_can_network_connect 1

答案 3 :(得分:0)

在CentOS Linux版本7.5.1804上,我们可以通过编辑 / etc / selinux / config 并像下面这样更改SELINUX的设置来使其工作:

SELINUX=disabled