12.5. リバースプロキシとしての設定

Squid には、リバースプロキシと呼ばれる Web サーバーを補強する動作モードが存在します。通常の代理アクセスは、外部 Web サーバーへの接続および、オブジェクトのキャッシュといったクライアントのための機能と言えますが、リバースプロキシは Web サーバーを補強するための機能と言えます。

リバースプロキシで動作する Squid は、クライアントからのリクエストを Web サーバーに代わって受けとります。もし、リクエストされたオブジェクトがキャッシュされており、そのオブジェクトが更新されていないものであればキャッシュ内のオブジェクトをクライアントに返します。リクエストされたオブジェクトのキャッシュが存在しない、もしくは更新されていれば本来の Web サーバーにリクエストを送り、オブジェクトを取得した後にクライアントへ返します。

つまり、リバースプロキシで動作する Squid は、Web サーバーのフロントエンドでサーバーのためにオブジャクトをキャッシュし、代理アクセスを行います。Web サーバーから見れば、繰り返しリクエストのあるオブジェクトは Squid が代わりに返してくれるので、Web サーバーの負荷を軽減することができます。例えば、CGI などのキャッシュ不可能なオブジェクトを含む場合には、Web サーバーは CGI の処理に専念できるメリットがあります。よって、リバースプロキシの本来の目的からすると、リバースプロキシとして動作させる Squid と Web サーバーは同じコンピュータで動作させるよりも、別々のコンピュータで動作させるほうが望ましいと言えます。

以下は、リバースプロキシの機能を有効にした場合の設定例です。リバースプロキシを使用するには、以下のタグを設定する必要があります。

http_port 80
httpd_accel_host www.turbolinux.co.jp
httpd_accel_port 8080
httpd_accel_single_host on
httpd_accel_with_proxy on

http_port port

プロキシサーバーがクライアントからのリクエストを待ち受けるポート番号を port に指定します。リバースプロキシとして動作させる場合は、実際の Web サーバーの代わりに Squid がリクエストを受け取りますので、通常は 80 番ポートを指定します。

httpd_accel_host hostname/ip|virtual

Web サーバーのホスト名、または IP アドレスを指定します。ここには、1 つの Web サーバーのみ指定可能です。複数のホストをサポートしたい場合は、ホスト名に virtual を指定する必要があります。また、httpd_accel_host を指定することで、リバースプロキシが有効になりますが、クライアントのためのキャッシュ機能は自動的に無効となります。両方を有効にするためには、後述の httpd_accel_with_proxyon で on を指定する必要があります。

httpd_accel_port port

実際の Web サーバーのポート番号を指定します。Web サーバーが Apache の場合は、設定ファイルである /etc/httpd/conf/httpd.conf の Listen ディレクティブで定義したポート番号と同じにします。上記例では 8080 を指定しています。

httpd_accel_single_host on|off

リバースプロキシのバックエンドで動作させる本来の Web サーバーが 1 台であれば on を指定し、複数台の場合は off を指定します。

httpd_accel_with_proxy on|off

Squid を、リバースプロキシと同時にキャシュサーバーとしても動作させたい場合は on を指定します。