Apache モジュール mod_proxy_http
概要
本モジュールには mod_proxy
が 必要です。
本モジュールは HTTP および HTTPS リクエストのプロキシに使う機能を提供します。
mod_proxy_http
は、 HTTP/0.9 と HTTP/1.0 と HTTP/1.1
をサポートします。キャッシュ機能は 持ちません。
キャッシュ機能を持つプロキシを設定したい場合、mod_cache
と組み合わせるのがよいでしょう。
HTTP リクエストのプロキシを有効にするには、mod_proxy
と mod_proxy_http
がサーバに組み込まれて
いなければいけません。
警告
安全なサーバにするまでプロキシ機能は有効にしないでください。
オープンプロキシサーバはあなた自身のネットワークにとっても、
インターネット全体にとっても危険です。
ディレクティブ
このモジュールにディレクティブはありません。
トピック
参照
mod_proxy
の動作を制御する設定ディレクティブ
に加えて、HTTP 動作を制御する多くの 環境変数 があります:
- proxy-sendextracrlf
- プロキシが、リクエストの最後に追加の CR-LF 改行コードを送るように
します。これはいくつかのブラウザにあるバグの回避用です。
- force-proxy-request-1.0
- プロキシがバックエンドに HTTP/1.0 でリクエストを送るようにし、
HTTP/1.1 の機能を無効にします。
- proxy-nokeepalive
- プロキシがリクエスト終了後にバックエンドとの接続を切るようにします。
- proxy-chain-auth
- プロキシが認証を要求する場合、プロキシはクライアントから送られるユーザ情報で
認証しますが、ユーザ情報はその先に転送しません。
proxy-chain-auth を有効にすると、プロキシはユーザ認証情報を
次のプロキシにも転送します。ユーザ認証を共有しているプロキシを連結している時、
この動作が必要でしょう。セキュリティ上の警告:
必要性が分からない限り、この動作を有効にしてはいけません。
と言うのも、大事な情報を転送してしまうからです。
- proxy-sendcl
- HTTP/1.0 では、ボディのあるリクエスト (例えば POST リクエスト)
はすべて Content-Length ヘッダを持つ必要があります。
この環境変数で、クライアントがプロキシに送ったのが何であるかに関わらず、
Apache のプロキシがバックエンドサーバにこのヘッダを送るように強制します。
これにより、HTTP/1.0 もしくはバージョン不明のバックエンドに転送する時の
互換性を保証します。しかし、この動作のためにプロキシはリクエストすべてをバッファリング
する必要があるかもしれません。このため、大きなサイズのリクエストで
非常に非効率になります。
- proxy-sendchunks or proxy-sendchunked
- これは proxy-sendcl の逆です。
リクエストのボディを chunked 転送エンコーディングでバックエンドに
送れるようにします。効率的なストリーム転送ができますが、
バックエンドサーバが HTTP/1.1 をサポートしている必要があります。
- proxy-interim-response
- この環境変数の値は
RFC
か Suppress
です。
httpd の初期のバージョンはバックエンドからの HTTP interim レスポンス (1xx)
を捨てることがありました。これは技術的には HTTP のプロトコル違反です。
実際には、バックエンドが interim レスポンスを返すとしたら、
そのバックエンドはプロトコルを我々の預かり知らない方法で独自拡張しているか、
単におかしいかどちらかでしょう。
なので、 interim に対する動作を設定で変更可能にしています。
proxy-interim-response RFC
と設定すると、
プロトコル準拠の動作になります。proxy-interim-response Suppress
と設定すると、 interim レスポンスをプロキシしません。
- proxy-initial-not-pooled
- この環境変数をセットすると、クライアントの最初の接続にはプールした
接続を使わなくなります。これは競合状態を原因とする
"proxy: error reading status line from remote server" エラーメッセージを
回避します。競合状態は、プロキシがプールした接続をチェックした後、
プロキシの送ったデータがバックエンドに到達する前にバックエンドが接続を閉じると発生します。
この変数をセットすることでパフォーマンスが劣化することを知っておくべきです。
特に HTTP/1.0 のクライアントに影響します。