====== 06 squid ======
スクイッドと読むらしいですね。日本語訳するとヤリイカの事だそうです。
squidでプロキシキャッシュサーバを作成してみたいと思います。
===== 環境 =====
FreeBSD 6.0
squid 2.5
===== インストール =====
# cd /usr/ports/www/squid
# make install clean ;rehash
===== /usr/local/etc/squid/squid.confを設定 =====
ログディレクトリとキャッシュディレクトリを変更しました。
no_cache deny QUERY
cache_dir ufs /work/squid 100 16 256
↑cacheフォルダの場所指定/キャッシュ容量/サブフォルダ数/更にサブフォルダ数
cache_log /var/squid/cache.log
cache_store_log /var/squid/store.log
pid_filename /var/run/squid/squid.pid
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl private src 192.168.1.0/255.255.255.0
http_access allow manager localhost
http_access allow private
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all
http_reply_access allow all
icp_access allow all
header_access Cache-Control deny all
header_access Via deny all
header_access X-Forwarded-For deny all
header_access Server deny all
header_access User-Agent deny all
header_access Accept allow all
header_replace User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
coredump_dir /var/log/squid
===== runディレクトリとlogディレクトリ作成 =====
# mkdir /var/run/squid
# chmod squid:wheel /var/run/squid
# mkdir /var/log/squid
# chmod squid:wheel /var/log/squid
===== 起動 =====
■squid.conf修正後、下記のコマンドでキャッシュディレクトリを作成する。
# squid -z
■起動シェルにて起動。
# /usr/local/etc/rc.d/squid start
===== 確認 =====
後はブラウザにProxy設定をして確認します。⇒[[Windows/Proxy]]~
これ⇒[[診断君>http://taruo.net/e/]]でチェックしてみました。
===== キャッシュクリア =====
■下記の手順でキャッシュクリアできます。起動シェルなどに組み込んだ方がいいかもしれません。~
# /usr/local/etc/rc.d/squid stop
# rm -rf /usr/local/squid/cache/*
# squid -z
# /usr/local/etc/rc.d/squid start
===== ログローテート =====
■squidのログローテートは下記のコマンドで行います。
# /usr/local/sbin/squid -k rotate
■cronに設定しておく(月に一回ローテートする設定例)
0 0 1 * * /usr/local/bin/sudo /usr/local/sbin/squid -k rotate
===== キャッシュさせたくない場合 =====
■/usr/local/etc/squid/squid.confでno_cashで指定する。
# vi /usr/local/etc/squid/squid.conf
------------------例---------------------
acl QUERY1 urlpath_regex cgi-bin \?
no_cache deny QUERY1
↑cgi-bin ?を含むURLをキャッシュしない
acl SERVER1 dstdomain www.flateight.com
no_cache deny SERVER1
↑www.flateight.comのドメインをキャッシュしない
no_cac
acl QUERY2 url_regex yahoo\.co\.jp
no_cache deny QUERY2
↑yahoo.co.jpを含むURLをキャッシュしない
-------------------例--------------------
設定後は一回サービスをリスタートします。
===== 参考サイト =====
[[http://www.ryuon.org/FreeBSD/install_manual/15.squid.txt]]
===== Basic認証の設定 =====
==== パスワードの設定 ====
Apacheのhtpasswdを使用します。プログラムのディレクトリと、パスワードファイルの保存先は適宜
# htpasswd -c /usr/local/squid/passwd username
==== squid.confの編集 ====
下記を設定します。auth_paramのディレクトリは適宜。http_accessのallow設定では、ネットワークのallow設定(例:http_access allow mylocal)はコメントアウトしておく。
# TAG: auth_param
auth_param basic program /usr/local/libexec/squid/ncsa_auth /usr/local/etc/squid/passwd
# TAG: acl
acl password proxy_auth REQUIRED
# TAG: http_access
http_access allow password
{{tag>squid}}