閱讀993 返回首頁    go 中電雲集


圖片型squid的配置

?用Squid搭建Cache服務器 - [技術筆記]

2009-03-30 | Tag:squid 反向代理 cache 配置

版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明

https://iyubo.blogbus.com/logs/37254471.html

其實本人實在是更喜歡Varnish一些,而線上用來跑css/js等靜態文件cache的Varnish也確實運行的非常好,緩存的命中率也很高,性能也很好。但是因為是內存式的Cache,Varnish在緩存圖片時當達到一定量的時候會出現無法分配內存導致重啟子進程緩存丟失的情況。所以當圖片數量級較大且訪問量較大時,還是老老實實用Squid吧。

安裝環境

操作係統: CentOS release 5.2 (Final)

Kernel: 2.6.18-92.el5PAE

軟件列表

squid-2.6.STABLE22.tar.gz

軟件存放位置

/data/software

安裝過程

#/usr/sbin/groupadd squid -g 610

#/usr/sbin/useradd -u 610 -g squid squid

#mkdir /srv/scache

#chmod +w /var/vcache

#chown -R squid.squid /srv/scache

#mkdir /var/log/squid

#chmod +w /var/log/squid

#chown -R squid.squid /var/log/squid

#cd /data/software/pkg

#tar zxvf ../squid-2.6.STABLE22.tar.gz

#cd squid-2.6.STABLE22

#./configure –prefix=/usr/local/squid

#make && make install

編輯Squid配置文件

#vi /usr/local/squid/etc/squid.conf

————————-華麗的分割線,以下都是配置文件內容—————————-

#定義acl項名稱

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

acl Safe_ports port 80

acl safeprotocol protocol HTTP

acl test dstdomain .test.com

acl CONNECT method CONNECT

#定義acl規則

http_access allow manager localhost

http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access deny to_localhost

http_access allow safeprotocol Safe_ports test

http_access deny all

icp_access allow all

#squid監聽端口

http_port 80 accel defaultsite=59.151.32.58 vhost

always_direct allow all

#後端服務器

cache_peer 10.10.10.8 parent 80 0 no-query originserver

hierarchy_stoplist cgi-bin ?

#內存cache大小

cache_mem 2048 MB

#內存cache中最大的object大小(超過這個值則不進入內存cache)

maximum_object_size_in_memory 8 KB

#內存cache的替換規則

memory_replacement_policy lru

#硬盤cache的替換規則

cache_replacement_policy lru

#磁盤cache目錄(文件類型 cache目錄路徑 cache目錄大小 二級目錄個數 每個二級目錄下的三級目錄個數)

cache_dir ufs /srv/scache 40000 16 256

#磁盤cache中最小的object的大小(低於這個值則不緩存)

minimum_object_size 0 KB

#磁盤cache中最大的object的大小(超過這個值則不緩存)

maximum_object_size 2048 KB

cache_swap_low 90

cache_swap_high 95

#定義日誌格式

logformat combined %>a %ui %un [%tl] “%rm %ru HTTP/%rv” %Hs %<st “%{Referer}>h” “%{User-Agent}>h” %Ss:%Sh

#記錄相關日誌

access_log /var/log/squid/access.log squid

cache_log /var/log/squid/cache.log

cache_store_log /var/log/squid/store.log

#日誌rotate(24則後綴從.0到.23)

logfile_rotate 24

emulate_httpd_log on

#如果你的URL裏麵帶有?,這兩行一定要注銷掉

#acl QUERY urlpath_regex cgi-bin \?

#cache deny QUERY

#配置自動更新(關於後麵的三個值請參考Squid配置手冊)

refresh_pattern -i \.jpg$ 60 80% 1440

refresh_pattern -i \.png$ 60 80% 1440

refresh_pattern -i \.gif$ 60 80% 1440

quick_abort_min 16 KB

quick_abort_max 16 KB

quick_abort_pct 95

request_header_max_size 10 KB

reply_header_max_size 10 KB

acl apache rep_header Server ^Apache

broken_vary_encoding allow apache

#相關timeout設置

forward_timeout 4 minutes

connect_timeout 3 minutes

peer_connect_timeout 30 seconds

read_timeout 15 minutes

request_timeout 1 minute

persistent_request_timeout 3 minutes

half_closed_clients off

pconn_timeout 1 minute

#cache管理員郵箱

cache_mgr webmaster@test.com

cache_effective_user squid

cache_effective_group squid

#squid服務器的visible_hostname,此處指定的值顯示在Squid響應的Header裏麵的X-Cache項中

visible_hostname squidserver

coredump_dir /var/log/squid/cache

————————華麗的分割線,以上都是配置文件內容—————————–

初始化squid緩存目錄

#/usr/local/squid/sbin/squid -z

啟動squid

#/usr/local/squid/sbin/squid -sD

配置完成以後,最重要最重要的一點,修改Squid服務器的hosts文件,將需要Cache的域名指向到後端的服務器IP上

相關命令

停止squid

/usr/local/squid/sbin/squid -k shutdown

啟用新配置

/usr/local/squid/sbin/squid -k reconfig

通過crontab每小時截斷/輪循日誌

59 * * * * /usr/local/squid/sbin/squid -k rotate

查看squid運行狀況

/usr/local/squid/bin/squidclient -p 80 mgr:info

/usr/local/squid/bin/squidclient -p 80 mgr:5min

查看squid內存使用情況

/usr/local/squid/bin/squidclient -p 80 mgr:mem

查看squid磁盤使用情況

/usr/local/squid/bin/squidclient -p 80 mgr:diskd

查看squid已緩存列表(小心使用,可能會導致crash)

/usr/local/squid/bin/squidclient -p 80 mgrbjects

強製更新某個url

/usr/local/squid/bin/squidclient -p 80 -m PURGE https://img.test.com/h/a.jpg

查看squid緩存到內存cache中並返回給訪問用戶的項

#cat /var/log/squid/access.log | grep TCP_MEM_HIT

查看squid緩存到磁盤cache中並返回給訪問用戶的項

#cat /usr/local/squid/var/logs/access.log | grep TCP_HIT

查看沒被squid緩存住,直接從原始服務器獲取並返回給訪問用戶的項

#cat /usr/local/squid/var/logs/access.log | grep TCP_MISS

關於 TCP_XXXX 等參數及代表的信息,請參考《squid中文權威指南》13.2.1 章節。

更多參數

/usr/local/squid/bin/squidclient -h

/usr/local/squid/bin/squidclient -p 80 mgr:menu

最後更新:2017-01-04 22:34:32

  上一篇:go linux分類查看網絡連接情況
  下一篇:go squid 優化