Apache(VirtualHost) + Squid(ReverseProxy)でWebサーバーを公開してみた。
今回は2つのサーバーを用いて、1つはSquid,もう一つはApache用に利用した。
インターネット ⇒ Proxyサーバー ⇒ Webサーバー と行われるWebアクセスなので、
ProxyサーバーでコンテンツをキャッシュすることでWebサーバーの処理を削減したり、
WebサーバーはListenすべき80番ポートの接続元が「Proxyサーバー」のみになるなど
色々と運用上利便がいいと思う。
1.Squidのインストール
# yum -y install squid # chkconfig squid on
2.Squidの設定変更
まずは、/etc/squid/ディレクトリに移動し、現在の設定のバックアップを取ります。
# cd /etc/squid
# cp -p squid.conf squid.conf.ORG
次に、squid.confをまっさらにし、viで編集します。
# :> squid.conf # vi squid.conf acl all src 0.0.0.0/0.0.0.0 http_access allow all # WebサーバーでVirtualHost利用しているので、私は「vhost」を書いています。 http_port SquidサーバーのIPアドレス:80 defaultsite=WebサーバーのIPアドレス vhost cache_peer WebサーバーのIPアドレス parent 80 0 no-digest no-query originserver login=PASS name=myAccel # Webアクセス先ホスト名が「.yourhost.com」で終わる場合に限り # Webサーバーにアクセスをさせます。acl名はご自由に設定してください。 acl acl名 dstdomain .yourhost.com cache_peer_access myAccel allow acl名 cache_peer_access myAccel deny all # URLに「cgi-bin」または「?」を含む場合はキャッシュを参照しない hierarchy_stoplist cgi-bin ? # キャッシュサイズをディフォルト100MBから1000MBに変更 cache_dir ufs /var/spool/squid 1024 32 256 access_log /var/log/squid/access.log squid # URLに「cgi-bin」や「?」を含む場合はキャッシュしない acl QUERY urlpath_regex cgi-bin ? cache deny QUERY coredump_dir /var/spool/squid # 管理者のメールアドレス cache_mgr hogehoge@hogehoge.com # Squidが使うメモリサイズ(ディフォルト:16MB) cache_mem 256 MB # PURGE出来る接続元を制限 acl purge method PURGE acl src_local src 127.0.0.0/8 http_access allow purge src_local http_access deny purge
設定の変更が完了したら、Squidを起動しておきます。
# service squid start
3.ドメインのDNS情報を変更
ドメインの名前解決情報を変更し、今までWebサーバーにアクセスしていたものを、
Squidサーバーにアクセスするように名前解決時のIPアドレスを変更します。
4.Webアクセスログフォーマットを変更してます
Webアクセスログにて「%h」を用いて接続元IPを記録すると、
全ての接続元IPアドレスがSquidサーバーのIPアドレスになってしまいます。
そこで「X-Forwarded-for」の情報を利用してログを出力するようにします。
Webサーバー上で「httpd.conf」を探し、アクセスログのcombinedのフォーマットを変更します。
#LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined LogFormat "%{X-Forwarded-for}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
設定の変更が終わったらAapcheをリロードしておきます。
# service httpd reload
以上で完了です。
コメント