Google Cloud の CentOS に Java Web アプリケーションがあります。 を使用して Web アプリケーションにアクセスできますhttp://mydomain:8080
。https://mydomain
( 8080
URL に を含めずに) アプリケーションに誘導したいのですが、代わりに「123 test」Apache ページが表示されます。プロキシ リダイレクトを行う必要があることはわかっていますが、それに苦労しています。ポートを443
Tomcat にリダイレクトする必要があります8080
。
私はタグ内でこれを試しました<VirtualHost>
:
1.
ProxyPass / http://www.mydomain.zone:8080
ProxyPassReverse / http://www.mydomain.zone:8080
ProxyPass "/" "http://www.mydomain.zone:8080"
ProxyPassReverse "/" "http://www.mydomain.zone:8080"
ProxyPass / https://www.mydomain.zone:8443
ProxyPassReverse / https://www.mydomain.zone:8443
ProxyPass "/" "https://www.mydomain.zone:8443"
ProxyPassReverse "/" "https://www.mydomain.zone:8443"
また、設定ファイルでは、常に試行された行の上にありますが、仮想ホスト タグ内には次の行があります。
ProxyRequests On
ProxyPreserveHost On
<Proxy *>
Order allow,deny
Allow from all
</Proxy>
試行するたびに、次のコマンドを実行します。systemctl restart httpd
また、これらの行を書き込むのにどのファイルが必要かわかりません。conf/httpd.conf
conf/httpd-le-ssl.conf
と は別のフォルダーにありますconf.d/ssl.conf
。
モジュールconf.modules.d/00-proxy.conf
# This file configures all the proxy modules:
LoadModule proxy_module modules/mod_proxy.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so
トムキャットのserver.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
keystoreFile="/tmp/mydomain.zone.jks"
keystorePass="pass"
clientAuth="false" sslProtocol="TLS" />
以前実装したルールがあるかどうか疑問に思いましたiptables
が、どうやらないようなので削除しました。現在アクティブなiptables
ルールは次のとおりです。
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N FORWARD_IN_ZONES
-N FORWARD_IN_ZONES_SOURCE
-N FORWARD_OUT_ZONES
-N FORWARD_OUT_ZONES_SOURCE
-N FORWARD_direct
-N FWDI_trusted
-N FWDI_trusted_allow
-N FWDI_trusted_deny
-N FWDI_trusted_log
-N FWDO_trusted
-N FWDO_trusted_allow
-N FWDO_trusted_deny
-N FWDO_trusted_log
-N INPUT_ZONES
-N INPUT_ZONES_SOURCE
-N INPUT_direct
-N IN_trusted
-N IN_trusted_allow
-N IN_trusted_deny
-N IN_trusted_log
-N OUTPUT_direct
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -j INPUT_direct
-A INPUT -j INPUT_ZONES_SOURCE
-A INPUT -j INPUT_ZONES
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -j FORWARD_direct
-A FORWARD -j FORWARD_IN_ZONES_SOURCE
-A FORWARD -j FORWARD_IN_ZONES
-A FORWARD -j FORWARD_OUT_ZONES_SOURCE
-A FORWARD -j FORWARD_OUT_ZONES
-A FORWARD -m conntrack --ctstate INVALID -j DROP
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -j OUTPUT_direct
-A FORWARD_IN_ZONES -i eth0 -g FWDI_trusted
-A FORWARD_IN_ZONES -g FWDI_trusted
-A FORWARD_OUT_ZONES -o eth0 -g FWDO_trusted
-A FORWARD_OUT_ZONES -g FWDO_trusted
-A FWDI_trusted -j FWDI_trusted_log
-A FWDI_trusted -j FWDI_trusted_deny
-A FWDI_trusted -j FWDI_trusted_allow
-A FWDI_trusted -j ACCEPT
-A FWDO_trusted -j FWDO_trusted_log
-A FWDO_trusted -j FWDO_trusted_deny
-A FWDO_trusted -j FWDO_trusted_allow
-A FWDO_trusted -j ACCEPT
-A INPUT_ZONES -i eth0 -g IN_trusted
-A INPUT_ZONES -g IN_trusted
-A IN_trusted -j IN_trusted_log
-A IN_trusted -j IN_trusted_deny
-A IN_trusted -j IN_trusted_allow
-A IN_trusted -j ACCEPT
答え1
2 つの問題が発生しましたが、問題はプロキシ ルールに関するものではなく、正しく記述したものでした。
最初の問題の解決策はここに見つかりました:http://sysadminsjourney.com/content/2010/02/01/apache-modproxy-error-13permission-denied-error-rhel/
どうやら、SELinux は httpd がアウトバウンド接続を開始できないことを許可していなかったようです。これを許可する必要がありました: /usr/sbin/setsebool -P httpd_can_network_connect 1
2 番目の問題は、 で SSL を設定しているのに、Apache で SSL がすでに有効になっているため、Tomcat が RAM メモリを大量に使用していたことですserver.xml
。これをコメントアウトすると、Tomcat の RAM 消費量が削減されました。