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

use*_*302 73 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
Run Code Online (Sandbox Code Playgroud)

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

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" proxyPort="80" />
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试网址时http://localhost/myapp,它会503 Service Unavailable出错.

Tomcat和Apache都已启动并运行.URL 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
Run Code Online (Sandbox Code Playgroud)

解决了!

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

Bri*_*汤莱恩 117

(在问题编辑中由OP回答.转换为社区维基答案.请参阅问题但没有答案,但问题已在评论中解决(或在聊天中扩展))

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
Run Code Online (Sandbox Code Playgroud)

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

  • 我认为这不是导致503的唯一原因.因为SELinux被禁用了.它可能是VirtualHost配置错误. (3认同)

Tej*_*ank 7

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

我们,为企业 linux RedHat 工作的 SnippetBucket.com,发现 httpd 服务器不允许代理运行,无论是 localhost 还是 127.0.0.1,也不是任何其他外部域。

在服务器日志中调查发现

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

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

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
Run Code Online (Sandbox Code Playgroud)

由于linux内部默认安全,这个原因,现在修复(临时)

 /usr/sbin/setsebool httpd_can_network_connect 1
Run Code Online (Sandbox Code Playgroud)

解决永久性问题

/usr/sbin/setsebool -P httpd_can_network_connect 1
Run Code Online (Sandbox Code Playgroud)


Dan*_*iel 6

这对我有用:

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
Run Code Online (Sandbox Code Playgroud)

  • 文件名和位置是什么? (2认同)
  • 突然今天apache代理在IP 1.2.3.4的本地机器上停止工作443,所以从`ProxyPass/http:// 1.2.3.4:1234`改为`ProxyPass/http:// localhost:1234`(同样完成for ProxyPassReverse) - 我不知道为什么会发生这种情况.UnattendedUpdate没有安装与apache相关的东西,今天没有运行. (2认同)