ProxyPassReverseディレクティブの使用とは


8

apache.orgの定義によると:

このディレクティブにより、Apache httpdはHTTPリダイレクト応答のLocation、Content-LocationおよびURIヘッダーのURLを調整できます。これは、Apache httpdがリバースプロキシ(またはゲートウェイ)として使用され、リバースプロキシの背後にあるバックエンドサーバー上のHTTPリダイレクトのためにリバースプロキシをバイパスすることを回避する場合に不可欠です。

上記で具体的に説明したHTTP応答ヘッダーのみが書き換えられます。Apache httpdは他の応答ヘッダーを書き換えたり、デフォルトでHTMLページ内のURL参照を書き換えたりすることはありません。つまり、プロキシされたコンテンツに絶対URL参照が含まれている場合、プロキシはバイパスされます。プロキシと一致するようにHTMLコンテンツを書き換えるには、mod_proxy_htmlをロードして有効にする必要があります。

pathはローカル仮想パスの名前です。urlは、リモートサーバーの部分的なURLです。これらのパラメーターは、ProxyPassディレクティブの場合と同じ方法で使用されます。

誰か私にそれがどのように機能するか説明してくれませんか?一般に、このディレクティブは何をしますか?

回答:


8

サーバーが実際にリクエストを処理する場合、そのサーバー上の別のURLにリダイレクトすると、ProxyPassReverseディレクティブはリバースプロキシサーバーの観点からURLを書き換えます。たとえば、次の場合、Apacheのドキュメントに記載されています

 http://reverseproxy.com/mirror/foo/bar

に送信されます(逆プロキシ)

 http://backend.example.com/bar

処理用ですが、バックエンドサーバーでは、正しいURLである必要があると判断されますquux。つまり、リクエストは

 http://backend.example.com/quux

ProxyPassReverseディレクティブがに(リバースプロキシで)URLを書き換え

 http://reverseproxy.com/mirror/foo/quux

HTTPリダイレクト応答をクライアントに転送する前。このようにして、クライアントはリバースプロキシサーバーのみを認識しますが、それでも正しいURLに必要な要求を行うことができ、そのURLはhttp://reverseproxy.com/mirror/foo/quuxバックエンドサーバーにリバースプロキシされ、通常どおり処理されます。つまり、リバースプロキシがHTTPリダイレクト応答で正しいURIヘッダーを返すことができるようにするだけです。


does a redirect実際の意味が明確ではありません。HTTPリダイレクト応答(301/302)で応答しますか?
Chris Stryczynski

「ステータスコードの3xx(リダイレクト)クラスは、要求を満たすためにユーザーエージェントがさらにアクションを実行する必要があることを示すので、いくつかの3xxコードで応答します。リダイレクトについては、RFC 7231を参照してください。このProxyPassReverseディレクティブは、3xx HTTP応答にリバースプロキシサーバーの観点から正しいURIが含まれていることを確認するだけです。
コルト

0

以下からのApache 2.4リバースプロキシガイド

バックエンドから生成されたLocation:ヘッダーが、それ自体に戻るのではなく、リバースプロキシを指すように変更されていることを確認するには、ProxyPassReverseディレクティブが最も必要です。

ProxyPass "/" " http://www.example.com/ "

ProxyPassReverse "/" " http://www.example.com/ "

クライアントと2つのサーバー(プロキシとオリジン)があり、オリジンが実際の作業(応答の生成)を行い、プロキシがオリジンへのリクエストをプロキシするだけの場合、適切なサーバーアーキテクチャは次の場合です。

  1. Originはプロキシについて知りません
  2. そして、すべての要求がプロキシを通過します。

Originがプロキシを認識していない場合、Originが直接クライアントを指すプロキシを介してHTTPリダイレクト(HTTP 301または302)をクライアントに返すことがあります。また、次のラウンドではブラウザが直接Originに接続するため、これは問題になります。これは、ポイント2に違反します。

HTTPリダイレクト応答がクライアントに向けてプロキシに戻ると、プロキシはそれらのリダイレクトを変更できるため、ロケーションが依然としてプロキシを指すようにする必要があります。このようにして、プロキシが適切に構成されている限り、プロキシを認識しないOriginで実行されているスタンドアロンアプリケーションは、リダイレクトURLを生成できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.