Apache のフォワードプロキシは、外部宛先には親プロキシを使い、選択した内部サービスには直接接続できます。このルーティングの選択を、既存のアクセス制御されたプロキシ設定に追加します。

ProxyRemote "*" "http://parent.example:8080"
NoProxy app.internal.example packages.internal.example

NoProxy の項目はスペースで区切ります。これらのホストに一致するリクエストは、設定された ProxyRemote の親プロキシを迂回します。それ以外の一致するトラフィックは親プロキシ経由の経路を維持します。HTTP プロキシ一覧にある認証なしのアドレスは、許可された公開サイト向けトラフィックの親プロキシ候補になれます。その分岐では親プロキシの資格情報を使わず、内部向けの例外を保持してください。

クライアントは依然としてリクエストを Apache に送ります。ここでの「直接」は Apache から宛先への次ホップを指し、ブラウザに Apache の利用をやめさせるものではありません。クライアント側の NO_PROXY 値は別のルーティング判断になります。

ドメイン指定には明示的な形式がある

DNS ドメイン全体については、Apache は .internal.example のような先頭ピリオド形式を記載しています。意図した例外がそのドメインのホストを対象とする場合にだけ使ってください。ホストを正確に指定すれば、より小さな例外として評価しやすくなります。

名前が指すのは宛先であり、親プロキシではありません。Apache には、これらの宛先への直接の名前解決、到達性、アクセスも必要です。親プロキシを迂回しても、親プロキシ経由でしか存在しない経路は得られません。

クライアントの認可ルールは既存のプロキシ設定に残します。NoProxy は上流のルーティングを選ぶものであり、誰がフォワードプロキシを使えるかは制限しません。

関連記事