天天看點

squid加速WEB支援虛拟主機配置心得體會

 本人的一個朋友是做網站的,一起托管了一台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 看一下端口啟動沒有