本人的一個朋友是做網站的,一起托管了一台WEB伺服器,日流量上萬,上面開設了很多個虛拟主機,呵呵還有我的ynho.com,近日裝上Squid 進行WEB加速,Squid 和Apache均在同一台伺服器上面,效果非常明顯,确實,弄這個東西花費了我不少時間,幾個通宵的研究,同時也很感謝在CU上面的朋友熱心幫助,下面是我的一些心得。
我們的伺服器基本配置是:
INTEL 雙核 2.8g , 2G記憶體,160G SATA硬碟 100M寬帶 作業系統:freebsd
安裝: ./configure --with-maxfd=65536
這個--with-maxfd參數是增大squid檔案描述符到65536
安裝完畢後開始配置/usr/local/squid/etc/squid.conf
http_port xx.xx.xx.xx:80 vhost vport
#xx.xx.xx.xx為這台伺服器的IP位址
icp_port 0
cache_mem 400 MB
#設定Squid所能使用的記憶體共400MB,這個值因人而異
cache_swap_low 90
cache_swap_high 95
maximum_object_size 20000 KB
#最大緩存檔案大小,超過這個值則不緩存,這個值因人而異
maximum_object_size_in_memory 4096 KB
#裝入記憶體緩存的檔案大小,這個值對Squid的性能影響比較大,因為預設值是8K,超過8K的檔案都不裝入記憶體,而實際應用中很多網頁和圖檔等都超過8KB, 個人認為如果緩存不裝入記憶體而存在磁盤上,性能和apache直接讀取磁盤檔案沒什麼差別,甚至不如直接通路apache,現在設定成小于4兆的檔案通通裝入記憶體緩存.
cache_dir ufs /tmp1 10000 16 256
#磁盤緩存的類型和目錄,大小,一二級目錄的設定,這裡磁盤緩存大小是10G
cache_store_log none
#這個設定是不記錄store.log
emulate_httpd_log on
#打開emulate_httpd_log選項,将使Squid仿照Aapche的日志格式
logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
#日志格式combined的設定
pid_filename /var/log/squid/squid.pid
cache_log /var/log/squid/cache.log
access_log /var/log/squid/access.log combined
#這裡是設定pid和日志檔案的位置,因人而異,同時日志格式是combined,awstats可以直接調用分析了
acl all src 0.0.0.0/0.0.0.0
acl QUERY urlpath_regex cgi-bin .php .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .exe
cache deny QUERY
#設定不想緩存的目錄或者檔案類型
acl picurl url_regex -i /.bmp$ /.png$ /.jpg$ /.gif$ /.jpeg$
acl mystie1 referer_regex -i 1.ynho.com
http_access allow mystie1 picurl
acl mystie2 referer_regex -i 2.ynho.com
http_access allow mystie2 picurl
#設定防圖檔盜鍊的,其中1.ynho.com,和2.ynho.com分别是虛拟主機的域名,referer中必須包含有aaa或者bbb的域名才能通路圖檔
acl nullref referer_regex -i ^$
http_access allow nullref
acl hasref referer_regex -i .+
http_access deny hasref picurl
#設定允許直接通路圖檔和拒絕referer中沒有包含aaa或着bbb的通路圖檔
cache_peer xx.xx.xx.xx parent 81 0 no-query originserver login=PASS
#xx.xx.xx.xx還是本機伺服器的IP,81則是apache的端口,如果你的虛拟主機有使用者名和密碼保護起來的目錄必須設定login=PASS,否則認證會失效
cache_effective_user nobody
cache_effective_group nobody
#squid使用的使用者組和使用者名
squid配置完成!
建立緩存和日志目錄,并改變權限使squid能寫入
mkdir /tmp1
mkdir /var/log/squid
chown -R nobody:nobody /tmp1
chmod 666 /tmp1
chown -R nobody:nobody /var/log/squid
-----------------------
Apache需要改動的配置
Port 81
#要把端口改為81
NameVirtualHost xx.xx.xx.xx:81
#本台主機IP和端口
虛拟主機配置
<VirtualHost xx.xx.xx.xx>
DocumentRoot /home/aaa/www
ServerName aaa.com
ScriptAlias /cgi-bin/ "/home/aaa/cgi-bin/"
<Directory />
Options Includes FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
如果還有别的虛拟主機請參照上面設定重新開機apache : apachectl restart
----------------------------------------------------------
首次運作squid要先建立緩存
/usr/local/squid/sbin/squid -z
啟動squid
echo "65535" > /proc/sys/fs/file-max
ulimit -HSn 65535
/usr/local/squid/sbin/squid
大家最好把這幾句話放到squid啟動腳本裡面,這樣才會獲得65536檔案描述符
最好還編輯/etc/hosts 檔案
添加以下内容
這樣免去查詢DNS,速度也快一些
現在netstat 看一下端口啟動沒有