Apache/リバースプロキシ
提供:maruko2 Note.
< Apache
目次 |
Apache モジュール
- mod_proxy
- HTTP プロキシ/ゲートウェイサーバ
- mod_proxy_connect
- mod_proxy も必要。HTTP メソッドの CONNECT をサポートする。CONNECT リクエストは SSL トンネリングに使われる。
- mod_proxy_http
- mod_proxy も必要。HTTP と HTTPS のリクエストをプロキシするための機能を提供する。キャッシュ機能はないため、キャッシュさせるには mod_cache を使う必要がある。
- mod_proxy_ftp
- mod_proxy も必要。FTP サイトをプロキシするのに必要。
リバースプロキシの設定ディレクティブ
- ProxyRequests
-
ProxyRequests On|Off
- フォワードプロキシを有効にする。
- デフォルト: ProxyRequests Off
- ProxyPass
-
ProxyPass [path] !|url [ley=value key=value ...]]
- リモートサーバをローカルサーバの URL 空間にマップする。
- path はローカルの仮想パスの名前で、url はリモートサーバの URL を記述する。
- ProxyPassReverse
-
ProxyPassReverse [path] url
- リバースプロキシされたバックエンドサーバから送られた HTTP 応答ヘッダの URL を調整する。
設定例
リバースプロキシのみを使う(フォワードプロキシを使わない)場合は ProxyRequests Off にしておく。
ProxyRequests Off ProxyPass /cgi-bin/foo http://www.example.com/cgi-bin/foo ProxyPassReverse /cgi-bin/foo http://www.example.com/cgi-bin/foo
Location コンテナ内に記述する場合
設定例
<Location> コンテナ内に記述する場合は、ローカルの仮想パスを記述しない。
ProxyRequests Off <Location "/cgi-bin/foo"> ProxyPass http://www.example.com/cgi-bin/foo ProxyPassReverse http://www.example.com/cgi-bin/foo </Location>
ProxyPassReverse の例
バックエンドサーバをローカルのアドレスで指定
ProxyPass /foo http://192.168.0.1/foo ProxyPassReverse /foo http://192.168.0.1/foo
- このような設定で http://www.example.com/foo/bar などディレクトリへのアクセスがあると、バックエンドサーバはリダイレクトのレスポンスを返す。
- ProxyPassReverse の設定がないと、Location ヘッダが http://192.168.0.1/foo/bar/ のままリバースプロキシを通過しブラウザへ返されるため、ブラウザはバックエンドサーバへ直接アクセスしてしまう。
- ProxyPassReverse の設定をしておくと、リバースプロキシで URL が書き換えられるため、ブラウザは再びリバースプロキシへアクセスするようになる。
バックエンドサーバのログ設定
バックエンドサーバのログには、クライアントのアドレスが記録されず、リバースプロキシからのアクセスが記録されるようになる。 例えば、リバースプロキシのIPアドレスが 192.168.1.1 だとすると、バックエンドサーバのログには 192.168.1.1 からアクセスがあったとして記録される。
これは、Apache の ログフォーマットがリモートホストのアドレスを記録するように定義しているため。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
バックエンドサーバではリモートホストのアドレスではなく、mod_proxy が付加した HTTP リクエストヘッダの X-Forwarded-For を記録するようにすれは、リモートホストのアドレスを記録するようになる。
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" reverse-proxy CustomLog logs/reverse-proxy.log reverse-proxy
参考ページ
Apache 関連のページ
- Apache/HTTP TRACE の無効化 . . カテゴリ: Apache | セキュリティ
- Apache/HTTPユーザー認証の設定 . . カテゴリ: Apache | アクセス制御 | セキュリティ
- Apache/SSL自己証明書の作成とmod sslの設定 . . カテゴリ: Apache | セキュリティ
- Apache/WebDAVの設定 . . カテゴリ: Apache | ファイルサーバ
- Apache/アクセス制御 . . カテゴリ: Apache | アクセス制御
- Apache/バーチャルホストのログをリモートのrsyslogに集約する . . カテゴリ: Apache | syslog
- Apache/ログのローテーション . . カテゴリ: Apache
- Let's EncryptのSSLサーバー証明書を、使用するサーバーとは別のマシンで作成する . . カテゴリ: Apache | セキュリティ
- ModSecurity のインストール . . カテゴリ: Apache | Webアプリ | セキュリティ
- RT Request Tracker を CentOS 5 にインストールする . . カテゴリ: Apache | CentOS | Webアプリ | メール
- WAF-FLE(ModSecurity Console)のインストールとセットアップ . . カテゴリ: Apache | Webアプリ | セキュリティ
- eAccelerator をインストールする . . カテゴリ: Apache | Webアプリ
- ベリサイン SSL サーバ証明書取得から apache mod ssl 設定までの流れ . . カテゴリ: Apache | セキュリティ