web-dev-qa-db-ja.com

リバースプロキシでURLリダイレクトを使用するにはどうすればよいですか?

私の要件は、リバースプロキシを使用してポート80で実行されているURLをリダイレクトすることです。 URLリダイレクトとリバースプロキシを一緒に使用する必要があると思います。

https://abcd.cdsw.intranet.example.comのようなWebドメインが既にアクティブになっていますが、リバースプロキシを使用してURLからの迂回を隠したいのですが、このURLはポート80で実行されると思います。

その結果、Redhat Enterprise Linux 7でhttpdサーバーを起動してリバースプロキシを導入することができませんでした。誰かがこれで私を助けることができますか?

期待される:

実際のURL:https://abcd.cdsw.intranet.example.com/login

予期されるURL:httpまたはhttps://example.com/cdsw

1
Vijay

Apacheでは、 ProxyPassReverseディレクティブ を使用すると、必要な処理が実行されます。バックエンドサーバーからリダイレクトを取得し、バックエンドホスト名をフロントエンド名に置き換えます。ドキュメントから:

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

また、Cookieパスの調整と組み合わせて通常どのように使用されるかの例もあります。

ProxyPass         "/mirror/foo/" "http://backend.example.com/"
ProxyPassReverse  "/mirror/foo/" "http://backend.example.com/"
ProxyPassReverseCookieDomain  "backend.example.com"  "public.example.com"
ProxyPassReverseCookiePath  "/"  "/mirror/foo/"

バックエンドサーバーからのHTMLドキュメントには絶対リンクもある場合があります。その場合は、 mod_proxy_html module を使用してこれらを置き換えることもできます。


この場合、バックエンドwebappを自分で開発したわけではなく、プロキシサーバーの背後で実行するための設定がない可能性があります。ただし、バックエンドwebappのコードを変更できる場合は、フロントエンドホスト名を使用してリンクとリダイレクトを記述するように変更できます。

フロントエンドプロキシサーバーは、X-Forwarded-Forヘッダーを使用してホスト名をバックエンドに渡します。プロキシの背後でシームレスに動作するように、ServerNameではなくこのヘッダーの値を使用するようにサーバーを変更できます。

2