# 主機名(3.0加入配置),無此項沒法啓動php
visible_hostname 172.16.1.80web
# 管理員郵箱,會顯示在錯誤信息頁面上,方便發生錯誤時聯繫!後端
cache_mgr yanchao@rd.tuan800.com緩存
# 實現透明代理(squid2.7以上),其中vhost是必須的服務器
http_port 8091 vhost vportdom
icp_port 3130ide
# 緩存設置性能
cache_mem 256 MB網站
maximum_object_size_in_memory 2 MBui
# 替換機制(lru叫作「最近不經常使用的單元」unit通常就是常說object, 也就是當cache
# 中的內容好比內存或硬盤達到上限時就須要進行數據的換進和換出工做)
memory_replacement_policy lru
# 緩存目錄50G,其中一級目錄16個,二級256個(每一個一級下16個二級)
cache_dir ufs /data1/squid/var/cache 500000 16 256
max_open_disk_fds 0
#緩存內容大小控制,當cache目錄被佔用到97%時,內容將被清空20%
cache_swap_low 80
cache_swap_high 97
# 錯誤信息目錄
error_directory /usr/local/squid/share/errors/Simplify_Chinese
# 最大和最小緩存對象
minimum_object_size 0 KB
maximum_object_size 30 MB
# 日誌格式
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh %tr
access_log /usr/local/squid/var/logs/page_zs_access_log combined
pid_filename /usr/local/squid/var/logs/squid.pid
# 不記錄store.log
cache_store_log none
# 指定代理服務器IP,2.5版本以上都是以cache_peer指定,sibling是2臺squid服務的緩存不一樣內容,當一個節點沒有命中去另外一個節點查找,主要爲了減小負載,後端是1.84 85 86沒命中緩存的圖片裁剪服務器
cache_peer 172.16.1.83 sibling 8091 3130
cache_peer 172.16.1.82 sibling 8091 3130
cache_peer 172.16.1.84 parent 10001 0 no-query originserver round-robin name=resize1
cache_peer 172.16.1.85 parent 10001 0 no-query originserver round-robin name=resize2
cache_peer 172.16.1.86 parent 10001 0 no-query originserver round-robin name=resize3
cache_peer_domain resize1 resize2 resize3
#緩存過時
refresh_pattern -i \.jpg$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.jpeg$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.webp$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.png$ 1440 90% 43200 reload-into-ims
# 容許客戶端全部請求(這裏能夠設置攔截url,格式以下面兩行緩存設置)
http_access allow all
#設置運行squid用戶,通常不能以root運行
cache_effective_user squid
cache_effective_group squid
~
命令
Squid平常維護過程當中,經常使用的一些命令:
1,初始化你在 squid.conf 裏配置的 cache 目錄
squid -z
若是有錯誤提示,請檢查你的 cache目錄的權限。
可使用使用更改目錄權限:
chown -R squid:squid /cache目錄
2,對你的squid.conf 排錯,即驗證 squid.conf 的 語法和配置。
squid -k parse
若是squid.conf 有語法或配置錯誤,這裏會返回提示你,若是沒有返回,嘗試啓動squid。
3,在前臺啓動squid,並輸出啓動過程。
/usr/local/squid/sbin/squid -N -d1
若是有ready to server reques相關信息,說明Squid啓動成功。
而後 ctrl + c,中止squid,並之後臺運行的方式啓動它。
4,啓動squid在後臺運行。
squid -s
可使用 ps -ax |grep squid 來查看squid進程是否存在。
5,中止 squid
squid -k shutdown
6,重引導修改過的 squid.conf
squid -k reconfigure -f /XXX/squid.conf
當squid進行過配置更改後,可使用該命令進行squid配置重載。
7,把squid添加到系統啓動項
vi /etc/rc.d/rc.local
/usr/local/squid/sbin/squid -s
8,修改cache 緩存目錄的權限。
chown -R squid:squid /cache目錄
cache緩存目錄根據本身配置進行更改,squid用戶和組是 squid,squid
(注:在FreeBSD系統中,若是咱們的squid監聽的是80端口時,只有root用戶才能啓動)。
9,修改squid 日誌目錄的權限
chown -R squid:squid 定義的日誌文件所在目錄
這一步並非適合每個使用squid的用戶.意爲讓squid有權限在該目錄進行寫操做 。
10,查看你的日誌文檔。
more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT
該指令能夠看到在squid運行過程當中,有那些文件被squid緩存到內存中,並返回給訪問用戶。
more /usr/local/squid/var/logs/access.log | grep TCP_HIT
該指令能夠看到在squid運行過程當中,有那些文件被squid緩存到cache目錄中,並返回給訪問用戶。
more /usr/local/squid/var/logs/access.log | grep TCP_MISS
該指令能夠看到在squid運行過程當中,有那些文件沒有被squid緩存,而是從原始服務器獲取並返回給訪問用戶。
二.squid命中率分析
/usr/local/squid/bin/squidclient -p 80 mgr:info
/usr/local/squid/bin/squidclient -p 80 mgr:5min
能夠看到詳細的性能狀況,其中PORT是你的proxy的端口,5min能夠是60min
取得squid運行狀態信息: squidclient -p 80 mgr:info
取得squid內存使用狀況: squidclient -p 80 mgr:mem
取得squid已經緩存的列表: squidclient -p 80 mgr:bjects. use it carefully,it may crash
取得squid的磁盤使用狀況: squidclient -p 80 mgr:diskd
強制更新某個url:squidclient -p 80 -m PURGE http://www.xxx.com/xxx.php
更多的請查看:squidclient-h 或者 squidclient -p 80 mgr:
查命中率:
squidclient -h IP(具體偵聽IP) -p 80(具體偵聽端口) mgr:info
3、按期清除swap.state內無效數據
/path/to/squid/sbin/squid -k rotate -f /path/to/squid/conf_file
vi /etc/crontab
0 0 * * * root /usr/local/sbin/squid -k rotate -f /usr/local/etc/squid/squid1.conf
當squid應用運行了一段時間之後,cache_dir對應的swap.state文件就會變得愈來愈大,裏面的無效接口數據愈來愈多,這可能影響squid的響應時間,所以須要使用rotate命令來使squid清理swap.state裏面的無效數據,減小swap.state的大小。
辦公室作的squid給客服用,主要是針對本公司網站圖片作的緩存
visible_hostname 192.168.10.89
cache_mgr yanchao@rd.tuan800.com
http_port 8091 vhost vport
icp_port 3130
cache_mem 30000 MB
maximum_object_size_in_memory 2 MB
memory_replacement_policy lru
cache_dir ufs /data1/squid/var/cache 50000 16 256
max_open_disk_fds 0
cache_swap_low 80
cache_swap_high 97
error_directory /usr/local/squid/share/errors/Simplify_Chinese
minimum_object_size 0 KB
maximum_object_size 30 MB
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
access_log /usr/local/squid/var/logs/page_zs_access_log combined
pid_filename /usr/local/squid/var/logs/squid.pid
cache_store_log none
cache_peer 192.168.10.89 sibling 8091 3130
cache_peer 192.168.10.59 sibling 8091 3130
cache_peer * parent 80 0 no-query originserver name=d
cache_peer * parent 80 0 no-query originserver name=j
cache_peer * parent 80 0 no-query originserver name=a
cache_peer * parent 80 0 no-query originserver name=b
cache_peer * parent 80 0 no-query originserver name=c
cache_peer * parent 80 0 no-query originserver name=e
cache_peer * parent 80 0 no-query originserver name=f
cache_peer * parent 80 0 no-query originserver name=g
cache_peer * parent 80 0 no-query originserver name=h
cache_peer * parent 80 0 no-query originserver name=i
cache_peer_domain d *.com
cache_peer_domain a *.com
cache_peer_domain b *.com
cache_peer_domain c *.com
cache_peer_domain e *.com
cache_peer_domain f *.com
cache_peer_domain g *.com
cache_peer_domain h *.com
cache_peer_domain i *.com
cache_peer_domain j *.com
refresh_pattern -i \.jpg$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.jpeg$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.webp$ 1440 90% 43200 reload-into-ims
refresh_pattern -i \.png$ 1440 90% 43200 reload-into-ims
http_access allow all
cache_effective_user squid
cache_effective_group squid