ProxyPassとProxyPassReverseを使用して、Apache経由で、別のTCP Vhostが存在するポート(VHostが:80にバインドされている:=ターゲットは:5000にバインドされています)。
ただし、ロケーションにアクセスすると、HTTP 503が繰り返し受信されます。
ProxyPassのドキュメント ...によると.
<VirtualHost *:80>
ServerName apacheserver.domain.local
DocumentRoot /var/www/redmine/public
ErrorLog logs/redmine_error
<Directory /var/www/redmine/public>
Allow from all
Options -MultiViews
Order allow,deny
AllowOverride all
</Directory>
</VirtualHost>
PassengerTempDir /tmp/passenger
<Location /rhodecode>
ProxyPass http://127.0.0.1:5000/rhodecode
ProxyPassReverse http://127.0.0.1:5000/rhodecode
SetEnvIf X-Url-Scheme https HTTPS=1
</Location>
代替サーバーのインターフェースIPアドレスへのバインドをテストしましたが、同じ問題が発生します。
サーバーサービス要求は、python paste:httpserverのインスタンスであり、/ rhodecodeサフィックスを使用するように構成されています(これは、ProxyPassに関する他の投稿で言及されているようです)。 プロジェクト自体のドキュメント 、Rhodecode、上記を使用することを報告します。
別のポートでサービスを提供している別のサーバーをターゲットにした場合、問題は解決しません。
ProxyPassは別のTCPポートへのプロキシを許可しますか?
[update]
誰かが同じ問題に遭遇した場合に備えて、私はこれを削除しません。
ErrorLogを設定しましたが、そのErrorLogで次のエラーが報告されました。
[Wed Nov 09 11:36:35 2011] [error] (13)Permission denied: proxy: HTTP: attempt to connect to 127.0.0.1:5000 (192.168.100.100) failed
[Wed Nov 09 11:36:35 2011] [error] ap_proxy_connect_backend disabling worker for (192.168.100.100)
さらに調査を行った後、SELinuxをpermissive(echo 0 >/selinux/enforce
)に設定して、再試行しました。
SELinuxブール値httpd_can_network_connect
を1
に設定する必要があることがわかりました。
再起動時の持続性:
setsebool -P httpd_can_network_connect=1
SELinuxに関してこれを修正する(ケーキを食べて食べる)より良い方法は、このコマンドを実行してhttpd_tタイプに使用しているポートを認識させることです。
semanage port -a -p tcp -t http_port_t 5000
その後、そのブール値をオフにしても、機能させることができます。