Httpd повертає службу 503, недоступну з mod_proxy для Tomcat 8


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

Мій server.xml в apache-tomcat виглядає так:

<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

Краще вилучіть опцію повторної спроби та тайм-ауту та поставте прапорець
KNOWARTH

3
FWIW, я отримував помилку 503, але з таймаутом. Виявилося, що для моїх ProxyPass*ліній я не міг використовувати своє власне ім'я сервера, і натомість мені потрібно було використовувати localhostабо свою, або свою IP-адресу, наприклад, ProxyPass / http://localhost/працював, але ProxyPass / http://example.com/ні.
inanutshellus

Відповіді:


129

(Відповідає OP у редагуванні запитання. Перетворено на відповідь wiki спільноти. Див. Питання без відповідей, але проблема вирішена в коментарях (або розширена в чаті) )

ОП писав:

Відповідь тут: http://sysadminsjourney.com/content/2010/02/01/apache-modproxy-error-13permission-denied-error-rhel/

Це посилання на щоденник, який пояснює:

SELinux на RHEL / CentOS за замовчуванням поставляється так, що процеси httpd не можуть ініціювати вихідні підключення, що якраз і намагається зробити mod_proxy.

Якщо це проблема, її можна вирішити, запустивши:

 /usr/sbin/setsebool -P httpd_can_network_connect 1

А для отримання остаточного джерела інформації див. Https://wiki.apache.org/httpd/13PermissionDenied


3
Я думаю, що це не єдина причина 503. Тому що SELinux відключений. Це може бути помилка конфігурації VirtualHost.
stamaimer

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
раптово сьогодні проксі-апаш apache перестав працювати лише на 443 на локальній машині з IP 1.2.3.4, тому перехід з ProxyPass / http:// 1.2.3.4:1234 на ProxyPass / http://localhost:1234 (однаково зроблено для ProxyPassReverse) - я не знаю, чому це сталося сьогодні. UnattendedUpdate не встановлював речі, пов’язані з Apache, і не запускався сьогодні.
eli,

@ Замініть файл /etc/apache2/sites-available/your-domain.com-le-ssl.conf або еквівалент Centos. та й зміни my-dom.com: <порт> на локальний: <порт> працював для мене теж на ubunbtu
Nelles

6

Вирішити проблему негайно, це пов’язано з внутрішньою безпекою

Ми, SnippetBucket.com, що працюємо для корпоративного Linux 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.