Squidでリバースプロキシ

かなり前にVPN網とリモートのローカル網との接続について書きましたが、
他にもリバースプロキシを使う方法があるので一応紹介しておきます。
まあ私の都合には合わないのですが。

さて、企業内LANからインターネットへアクセスする場合などにはプロキシサーバを利用するのが一般的です。
プライベートIPアドレスしか割り当てられないような通信サービスでも
NAT(CGN)の代わりにプロキシが使われたり、透過プロキシを意識せず使っているケースもあります。

プロキシがクライアントから近いところにあってクライアントの要求を代理するのに対し、
リバースプロキシはサーバに近いところにあってサーバへの要求を代理します。
大してかわらないじゃないかとか言われそうですが、
リバースプロキシはサーバ側の負荷軽減・分散、冗長性確保等、運用するにおいて利点があります。

プロキシと言えば私の中ではSquidで、

http_port 80 accel defaultsite=192.168.1.1
cache_peer 192.168.1.1 parent 80 0 no-query originserver

のような設定にしてSquidが受けたリクエストを192.168.1.1に全転送することができますが、
これでは転送先が複数あって振り分けたい場合に対応できません。
また外部用DNSサーバで複数ホスト名にプロキシサーバのIPアドレスに割り振っておいて、

http_port 80 transparent

と設定したsquidでリクエストを全部受け取り、Hostヘッダに書かれたホスト名を
内部用DNSサーバ(またはhostsファイル)で引いて複数マシンに振り分けることは可能です。
ルータがDMZ向けにアドレス付け替えをネットワーク層で行っておりところを、
アプリケーションレベルのセッション層でやっているようなイメージですね。
単一IPアドレスの単一Apacheでバーチャルホスト運用するよりは
サイト毎に別マシンを用意できるのでバックエンドの負荷分散にはなるでしょう。
が、個人的にはあまりそそられませんね。

広告