Подтвердить что ты не робот

Httpd возвращает 503 Service Unavailable с mod_proxy для Tomcat 8

Я пытаюсь интегрировать 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/

4b9b3361

Ответ 1

(Отвечает OP в вопросе редактирования. Преобразован в ответ на wiki сообщества. См. Вопрос без ответов, но проблема разрешена в комментариях (или расширенной в чате))

OP писал (а):

Ответ здесь: 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

Ответ 2

это сработало для меня:

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

Ответ 3

В CentOS Linux версии 7.5.1804 мы смогли выполнить эту работу, отредактировав /etc/selinux/config и изменив настройки SELINUX следующим образом:

SELINUX=disabled

Ответ 4

Решить вопрос немедленно, это связано с внутренней безопасностью

Мы, 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