Tomcat 8 용 mod_proxy에서 503 서비스를 사용할 수없는 Httpd 반환


81

Tomcat을 Apache와 통합하려고합니다. 내 목표는 모든 요청 리디렉션하는 것입니다 http://localhost/myapp로를http://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" />

이제 url을 시도 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

해결되었습니다!

대답은 여기에 있습니다 : http://sysadminsjourney.com/content/2010/02/01/apache-modproxy-error-13permission-denied-error-rhel/


3
힌트 주셔서 감사합니다. 나는이 발견 sysadminsjourney.com/content/2010/02/01/... 문제 해결
user2354302

재시도 및 시간 초과 옵션을 제거하고 확인하는 것이
좋습니다.

3
FWIW, 503 오류가 발생했지만 시간이 초과되었습니다. 내 ProxyPass*라인에 대해 실제 서버 이름을 사용할 수 없었고 대신 localhost또는 내 IP 주소 를 사용해야 ProxyPass / http://localhost/했습니다 ProxyPass / http://example.com/. 예를 들어 작동했지만 그렇지 않았습니다.
inanutshellus

답변:


129

(질문 편집에서 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

보다 명확한 정보 소스는 https://wiki.apache.org/httpd/13PermissionDenied를 참조 하십시오.


3
나는 그것이 503의 유일한 원인이 아니라고 생각합니다. SELinux가 비활성화 되었기 때문입니다. VirtualHost 구성 오류 일 수 있습니다.
stamaimer 2015-08-04

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

1
파일 이름과 위치는 무엇입니까 ??
Manish

2
갑자기 오늘 아파치 프록시에서 변경하도록 IP 1.2.3.4와 로컬 시스템에 단지 443을 작동이 중지 ProxyPass / http:// 1.2.3.4:1234ProxyPass / http://localhost:1234 (동등 ProxyPassReverse에 대해 수행) -이 오늘 일어난 이유를 모르겠어요. UnattendedUpdate는 아파치 관련 항목을 설치하지 않았으며 오늘 실행되지 않았습니다.
eli

@Manish 파일 /etc/apache2/sites-available/your-domain.com-le-ssl.conf 또는 Centos 동등한. 그리고 예 my-dom.com : <port>를 localhost : <port>로 변경하면 ubunbtu에서도 저에게 효과적이었습니다
Nelles

6

즉시 문제 해결, 내부 보안 관련

우리 SnippetBucket.com은 엔터프라이즈 리눅스 RedHat에서 일하고 있으며 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

감사 로그에서 유사한 포트 문제를 발견했습니다.

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

0

CentOS Linux 릴리스 7.5.1804에서는 / etc / selinux / config 를 편집 하고 SELINUX 설정을 다음과 같이 변경 하여이 작업을 수행 할 수있었습니다 .

SELINUX=disabled
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.