Httpd trả về Dịch vụ 503 Không khả dụng với mod_proxy cho Tomcat 8


81

Tôi đang cố gắng tích hợp Tomcat với Apache. Mục đích của tôi là chuyển hướng tất cả các yêu cầu http://localhost/myappđếnhttp://localhost:8080

Tôi đã làm theo hướng dẫn này: http://tomcat.apache.org/tomcat-8.0-doc/proxy-howto.html

Của tôi httpd.conftrông như thế này:

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

Server.xml của tôi trong apache-tomcat trông giống như sau:

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

Bây giờ khi tôi thử url http://localhost/myapp, nó 503 Service Unavailablebáo lỗi.

Cả Tomcat và Apache đều đang hoạt động. URL http://localhost:8080hoạt động tốt.

Có thể có vấn đề với quyền tệp không?

Đối với tomcatngười dùng và nhóm là root/rootvà cho httpd, người dùng và nhómapache/apache

Tôi đang thiếu cái gì đó hoặc tôi đang làm sai?

Phiên bản Httpd là 2.4.6 và phiên bản của Tomcat là 8.0

Nhật ký lỗi 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

Đã giải quyết!

Câu trả lời là ở đây: http://sysadminsjourney.com/content/2010/02/01/apache-modproxy-error-13permission-denied-error-rhel/


3
Cảm ơn vì gợi ý. Tôi tìm thấy sysadminsjourney.com/content/2010/02/01/… này đã giải quyết được sự cố
user2354302

Tốt hơn bạn nên xóa tùy chọn thử lại và thời gian chờ và kiểm tra
KNOWARTH

3
FWIW, tôi gặp lỗi 503 nhưng có thời gian chờ. Hóa ra rằng đối với ProxyPass*các dòng của tôi, tôi không thể sử dụng tên máy chủ thực tế của mình và thay vào đó cần sử dụng một trong hai localhosthoặc địa chỉ IP của tôi, ví dụ: ProxyPass / http://localhost/hoạt động nhưng ProxyPass / http://example.com/không hoạt động.
inanutshellus

Câu trả lời:


129

(Được OP trả lời trong bản chỉnh sửa câu hỏi. Được chuyển đổi thành câu trả lời trên wiki cộng đồng. Xem Câu hỏi không có câu trả lời, nhưng vấn đề được giải quyết trong nhận xét (hoặc mở rộng trong trò chuyện) )

OP đã viết:

Câu trả lời là ở đây: http://sysadminsjourney.com/content/2010/02/01/apache-modproxy-error-13permission-denied-error-rhel/

Đó là một liên kết đến một blog giải thích:

Theo mặc định, SELinux trên RHEL / CentOS vận chuyển để các quá trình httpd không thể bắt đầu các kết nối ra bên ngoài, đây chỉ là những gì mod_proxy cố gắng thực hiện.

Nếu đây là sự cố, nó có thể được giải quyết bằng cách chạy:

 /usr/sbin/setsebool -P httpd_can_network_connect 1

Và để có nguồn thông tin chính xác hơn, hãy xem https://wiki.apache.org/httpd/13PermissionDenied


3
Tôi nghĩ đó không phải là lý do duy nhất gây ra 503. Vì SELinux bị vô hiệu hóa. Đó có thể là lỗi cấu hình VirtualHost.
stamaimer

6

điều này đã làm việc cho tôi:

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
tên tập tin và vị trí là gì ??
Manish

2
đột nhiên hôm nay proxy apache ngừng hoạt động chỉ đối với 443 trên máy cục bộ có IP 1.2.3.4 nên chuyển từ ProxyPass / http:// 1.2.3.4:1234 sang ProxyPass / http://localhost:1234 (tương tự như vậy đối với ProxyPassReverse) - Tôi không biết tại sao điều này lại xảy ra hôm nay. UnattendedUpdate không cài đặt nội dung liên quan đến apache và không chạy hôm nay.
eli

@Manish tệp /etc/apache2/sites-available/your-domain.com-le-ssl.conf hoặc Centos tương đương. và vâng, thay đổi my-dom.com: <port> thành localhost: <port> cũng làm việc cho tôi trên ubunbtu
Nelles

6

Giải quyết vấn đề ngay lập tức, vấn đề liên quan đến bảo mật nội bộ

Chúng tôi, SnippetBucket.com đang làm việc cho RedHat linux doanh nghiệp, nhận thấy máy chủ httpd không cho phép proxy chạy, không phải localhost hoặc 127.0.0.1, cũng như bất kỳ miền bên ngoài nào khác.

Khi điều tra trong nhật ký máy chủ được tìm thấy

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

Nhật ký kiểm tra tìm thấy vấn đề cổng tương tự

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

Do bảo mật mặc định nội bộ của linux, nguyên nhân này, bây giờ cần khắc phục (tạm thời)

 /usr/sbin/setsebool httpd_can_network_connect 1

Giải quyết vấn đề vĩnh viễn

/usr/sbin/setsebool -P httpd_can_network_connect 1

0

Trên bản phát hành CentOS Linux 7.5.1804, chúng tôi có thể thực hiện công việc này bằng cách chỉnh sửa / etc / selinux / config và thay đổi cài đặt của SELINUX như sau:

SELINUX=disabled
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.