この記事では、Apacheの逆プロキシとしての構成の詳細について説明します。必要なモジュールを有効にすること、プロキシパスとプロキシパスリバースを使用して仮想ホストを作成し、一般的な問題(たとえば、構成エラー、接続の問題)、およびLeveのトラブルシューティングをカバーします
Apacheを逆プロキシとして構成するには、リクエストをバックエンドサーバーに転送する仮想ホストのセットアップが含まれます。これは通常、Apache構成ファイル内のProxyPass
およびProxyPassReverse
ディレクティブを使用して行われます(通常、オペレーティングシステムに応じて、 /etc/apache2/sites-available/
or同様のディレクトリにあります)。プロセスを分解しましょう:
1.必要なモジュールを有効にする: proxy
およびproxy_http
モジュールが有効になっていることを確認してください。 Debian/ubuntuシステムでは、次のことを使用します。
<code class="bash">sudo a2enmod proxy proxy_http sudo systemctl restart apache2</code>
他の分布にはわずかに異なるコマンドがある場合があります。詳細については、Distributionのドキュメントを参照してください。
2。仮想ホストを作成します:新しい仮想ホスト構成ファイルを作成します。たとえば、バックエンドサーバーがhttp://backend.example.com:8080
で実行されているとしましょう。構成ファイルは次のようになる場合があります。
<code class="apache"><virtualhost> ServerName proxy.example.com ServerAlias www.proxy.example.com ProxyPreserveHost On #Preserve the original host header ProxyPass / http://backend.example.com:8080/ ProxyPassReverse / http://backend.example.com:8080/ #Optional: Add error handling ErrorLog ${APACHE_LOG_DIR}/proxy-error.log CustomLog ${APACHE_LOG_DIR}/proxy-access.log combined </virtualhost></code>
ServerName
およびServerAlias
:逆プロキシへのアクセスに使用されるドメイン名を定義します。ProxyPreserveHost On
:これは重要です。クライアントからの元のホストヘッダーが保存され、バックエンドサーバーに転送されることが保証されます。これは、適切な機能のためにホストヘッダーに依存するアプリケーションにとって不可欠です。ProxyPass / http://backend.example.com:8080/
:この指令は、apacheにすべてのリクエストをhttp://backend.example.com:8080/
のバックエンドサーバーに/
に転送するよう指示します。必要に応じてパスを調整できます。ProxyPassReverse / http://backend.example.com:8080/
:この指令は、バックエンドサーバーからの応答のURLを修正するために不可欠です。それがなければ、バックエンドの応答のリンクとリダイレクトは正しくありません。ErrorLog
とCustomLog
:これらはオプションですが、デバッグと監視に強くお勧めします。3.仮想ホストを有効にしてApacheを再起動します。新しく作成された仮想ホストを有効にし、Apacheを再起動して変更を適用します。繰り返しますが、コマンドは分布によって異なる場合があります。 Debian/ubuntuの場合:
<code class="bash">sudo a2ensite <your_virtual_host_file_name> sudo systemctl restart apache2</your_virtual_host_file_name></code>
成熟して広く使用されているWebサーバーであるApacheは、逆プロキシとして使用するといくつかの利点を提供します。
mod_proxy_balancer
など)を使用すると、Apacheは複数のバックエンドサーバーにトラフィックを配布し、パフォーマンスと可用性を向上させることができます。逆プロキシの問題のトラブルシューティングでは、多くの場合、Apacheのエラーログを調べ、構成ファイルの間違いを確認します。一般的な問題とその解決策には以下が含まれます。
ProxyPass
とProxyPassReverse
ディレクティブをタイプミスの再確認し、バックエンドサーバーが到達可能で正しく応答できることを確認します。Host
ヘッダーに依存している場合、 ProxyPreserveHost On
Apache構成で設定されていることを確認してください。/var/log/apache2/error.log
apache2/error.logまたは同様の場所にあります)。これらのログは、多くの場合、問題の原因に関する貴重な手がかりを提供します。curl
でのテスト: curl
を使用して、Apacheサーバーの視点からバックエンドサーバーへの接続を直接テストします。これは、問題がApacheの構成とバックエンドサーバー自体にあるかどうかを分離するのに役立ちます。はい、HTTPSを使用した逆プロキシとしてApacheを絶対に使用できます。これは、セキュリティのために一般的で強く推奨される慣行です。 ApacheサーバーでSSL/TLSを構成し、仮想ホストを構成して、リクエストを安全に転送する必要があります。
以前の例を変更してHTTPSをサポートする方法は次のとおりです。
<code class="apache"><virtualhost> ServerName proxy.example.com ServerAlias www.proxy.example.com SSLEngine on SSLCertificateFile /etc/ssl/certs/your_certificate.crt SSLCertificateKeyFile /etc/ssl/private/your_certificate.key ProxyPreserveHost On ProxyPass / https://backend.example.com:8443/ ProxyPassReverse / https://backend.example.com:8443/ #Optional: Add error handling ErrorLog ${APACHE_LOG_DIR}/proxy-error.log CustomLog ${APACHE_LOG_DIR}/proxy-access.log combined </virtualhost></code>
/etc/ssl/certs/your_certificate.crt
および/etc/ssl/private/your_certificate.key
を忘れずに、SSL証明書と秘密キーファイルへの実際のパスを使用してください。また、バックエンドサーバーが指定されたポートのHTTPSを介してアクセスできるようにする必要があります(この例では8443など)。 Apacheでproxy_ssl
モジュールも有効にする必要があるかもしれません。
以上がApacheを逆プロキシとして構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。