Apache リバース プロキシ設定

Apache リバース プロキシ設定

それで、私はDebian 9ボックスでApache 2.4.25を実行しています

Apacheで別のサーバーからのWebコンテンツも提供したい(http://192.168.1.100:8088) をネットワーク上で実行します。これを行うために mod_proxy を設定しましたが、動作させるのに苦労しています。

この構成は、正しいサーバーからエラー コンテンツを取得しているため、ほぼ機能しているように見えますが、app1 エンドポイントが URL に追加される URL の問題があるようです。このエンドポイントは実際にはどこにも存在せず、リクエストをキャッチするためにのみ使用されます。

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyPreserveHost On
    ProxyRequests Off
    <proxy *>
      Order deny,allow
      Allow from all
    </proxy>
    ProxyPass /app1 http://192.168.1.100:8088/
    ProxyPassReverse /app1 http://localhost/
</virtualHost>

すべてのリクエストをこのようにプロキシしようとすると正常に動作しますが、明らかにローカルホスト上のリソースにアクセスすることはできません。

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    ProxyPreserveHost On
    ProxyRequests Off
    <proxy *>
      Order deny,allow
      Allow from all
    </proxy>
    ProxyPass / http://192.168.1.100:8088/
    ProxyPassReverse / http://localhost/
</virtualHost>

おそらく、何らかの ReWrite を実行する必要があると思います。Apache mod_proxy の使用経験は特にありません。

:-(

答え1

コメントで述べたように、少なくとも 2 つの明らかな問題があります。

  1. ProxyPass各個人およびステートメント内の「終了」スラッシュはProxyPassReverse一致する必要があります。

  2. ProxyPassProxyPassReverse同じホストを参照する必要があります。

したがって、最初の例では次のようになります。

ProxyPass /app1 http://192.168.1.100:8088/
ProxyPassReverse /app1 http://localhost/

正しくは:

ProxyPass /app1 http://192.168.1.100:8088
ProxyPassReverse /app1 http://192.168.1.100:8088

または:

ProxyPass /app1 http://localhost
ProxyPassReverse /app1 http://localhost

2 番目の例では、/ここで説明した目的のために、 は「終了」スラッシュと見なされます。つまり、

ProxyPass / http://192.168.1.100:8088/
ProxyPassReverse / http://localhost/

ホストを一致させるだけです:

ProxyPass / http://192.168.1.100:8088/
ProxyPassReverse / http://192.168.1.100:8088/

または:

ProxyPass / http://localhost/
ProxyPassReverse / http://localhost/

ノート

  • Apache がプロキシする URL を処理する方法により、受信側アプリケーションが独自の URL を構築する方法に依存する/よりも良い結果が得られる可能性があることを言及する価値があるでしょう。/app1

  • 受信側アプリケーションの動作によっては、複数の URL をプロキシする必要がある場合があります。

  • 何らかの理由でまだ有効になっていない場合は、有効にすることmod_proxy_htmlをお勧めします。mod_proxy_httpmod_proxy

関連情報