
それで、私は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 つの明らかな問題があります。
ProxyPass
各個人およびステートメント内の「終了」スラッシュはProxyPassReverse
一致する必要があります。ProxyPass
ProxyPassReverse
同じホストを参照する必要があります。
したがって、最初の例では次のようになります。
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_http
mod_proxy