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/
Ответы
Ответ 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