Tomcat8の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/myapp503 Service Unavailable発生します。

TomcatとApacheの両方が稼働しています。URLhttp://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 2014

再試行とタイムアウトのオプションを削除して確認することをお勧めします
KNOWARTH 2014

3
FWIW、503エラーが発生しましたが、タイムアウトが発生しました。私のProxyPass*回線では、実際のサーバー名を使用できず、代わりにいずれかlocalhostまたはIPアドレスを使用する必要ProxyPass / http://localhost/があることProxyPass / http://example.com/が判明しました。たとえば、機能しましたが機能しませんでした。
inanutshellus 2016

回答:


129

(質問の編集でOPによって回答されました。コミュニティwikiの回答に変換されました。回答のない質問を参照してください。ただし、コメントで問題が解決されました(またはチャットで拡張されました)

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

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
ファイル名と場所は何ですか?
マニッシュ2018

2
今日突然、apacheプロキシはIP 1.2.3.4のローカルマシンで443に対してのみ機能しなくなったため、からProxyPass / http:// 1.2.3.4:1234 に変更しました ProxyPass / http://localhost:1234 (ProxyPassReverseに対しても同様に行われました)-なぜこれが今日起こったのかわかりません。UnattendedUpdateは、Apache関連のものをインストールせず、今日は実行されませんでした。
eli 2018

@ファイル/etc/apache2/sites-available/your-domain.com-le-ssl.confまたは同等のCentosを管理します。はい、my-dom.com:<port>をlocalhost:<port>に変更すると、ubunbtuでも機能しました
Nelles

6

問題をすぐに解決します。これは内部セキュリティに関連しています。

エンタープライズLinuxRedHatで作業しているSnippetBucket.comは、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.