Squid集群做CDN全网加速http://www.php-oa.com/2007/12/27/squid-dnspod.html
http://bbs.chinaunix.net/viewthread.php?tid=798564 squid-2.6.STABLE1-20060726之Web加速实做
Squid--Linux下的一个优秀代理服务器软件使用详解 http://www.phpchina.com/html/87/n-33787.html
http://www.phpchina.com/html/87/n-33787.html
http://wiki.ubuntu.org.cn/Squid%E9%85%8D%E7%BD%AE%E8%AF%A6%E8%A7%A3
http://blog.s135.com/book/squid/ Squid中文权威指南
http://xuliangyong.iteye.com/blog/606980 利用squid refresh_pattern缓存图片
http://linux.chinaunix.net/techdoc/develop/2008/07/19/1018442.shtml Squid优化
http://hi.baidu.com/jackbillow/blog/item/09cd126094fa5dd88cb10d32.html
http://www.hiadmin.com/squid-3%E5%8A%A0%E9%80%9F%E6%A8%A1%E5%BC%8F%E9%85%8D%E7%BD%AE/ 加速模式配置
http://www.skyhe.com/blog/bloget/home/review.asp?ID=600
http://bbs.winos.cn/thread-48606-1-7.html由于最近在国外部署一台Squid反向代理加速,分享一下,Windows下Squid的配置过程
http://bbs.cd-dns.com/read-htm-tid-8037-page-e-fpage-2.html 推荐
http://blog.sina.com.cn/s/blog_5058ff560100e040.html
对普通的单位上网用户,Squid可充当代理服务器;而对Sina,NetEase这样的大型站点,Squid又充当WEB加速器。
主服务器群,然后在利用Squid逆向缓存web80端口来加速自己的网站.各大门户网站象163,sina,chinaitlab之类基本都是使用的这种技术,好处是大大的有。比如加速了网络和可以防黑客(因为他们见到的都是CDN的主机)
Squid是一个缓存internet数据的一个软件,它接收用户的下载申请,并自动处理所下载的数据。也就是说,当一个用户象要下载一个主页时,它向Squid发出一个申请,要Squid替它下载,然后Squid连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid把保存的备份立即传给用户,使用户觉得速度相当快。
Squid能够缓存任何数据吗?不是的。象缓存信用卡帐号、可以远方执行的scripts、经常变换的主页等是不合适的也是不安全的。Squid可以自动的进行处理,你也可以根据自己的需要设置Squid,使之过滤掉你不想要的东西。
Squid有好多高级的功能,如做WEB服务器的高速缓存,做二级代理服务器,做为防火墙,以及怎样设定过滤规则等
Squid是全功能的代理服务器软件
================= 安装配置
安装部分:
wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE26.tar.gz
yum -y install gcc gcc-c++ automake autoconf libtool make
yum -y install perl
tar -zxf squid-3.0.STABLE26.tar.gz -C /usr/local/src/;cd /usr/local/src/squid-3.0.STABLE26
./configure --prefix=/usr/local/squid-3.0.STABLE26/
make && make install
cd /usr/local/squid-3.0.STABLE26/
chown -R nobody:nobody var/
#拷贝原有的配置文件进行配置:
scp 192.168.1.122:/usr/local/squid/etc/{ssc.conf,squid.conf} etc/
sed -i "s/\/usr\/local\/squid/\/usr\/local\/squid-3.0.STABLE26/g" etc/squid.conf
#初始化:
/usr/local/squid-3.0.STABLE26/sbin/squid -z
#开启squid服务:
/usr/local/squid-3.0.STABLE26/sbin/squid
#修改防火墙:
vim /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -i eht1 -p tcp --dport 80 -j ACCEPT\
#重启防火墙:
/etc/init.d/iptables restart
#添加squid开机启动
echo "/usr/local/squid-3.0.STABLE26/sbin/squid" >> /etc/rc.local
#Squid修改配置后的重启方法:
/usr/local/squid-3.0.STABLE26/sbin/squid -k reconfigure
squid -k shutdown 停止
测试配置是否正确,并根据错误修改配置文件
# /usr/sbin/squid -k parse
================= squid.conf 详细说明
visible_hostname squid1.ihompy.com
#设定squid的主机名,如无此项squid将无法启动
http_port 80 accel vhost vport
#设定squid为accel加速模式,vhost必须要加.否则将无法将主机头转发至后端服务器,访问时就会出现无法找到主机头的错误
也可以不启用accel加速模式:http_port 80 vhost vport
cache_peer www.contentchina.com parent 80 0 no-query originserver name=contentchina
cache_peer bbs.contentchina.com parent 80 0 no-query originserver name=bbs
cache_peer www.ihompy.com parent 80 0 no-query originserver name=ihompy
#定义不同的父节点 ,将节点设为no-query以及originserver说明这些节点是实际服务器
cache_peer_domain contentchina www.contentchina.com
cache_peer_domain bbs bbs.contentchina.com
cache_peer_domain ihompy www.ihompy.com
#设定不同域名转发到不同的cache_peer上 ,如果没有这项.不同域名的域名可能被分发到同一台服务器上.
--------170,171是squid
#总导航:在本机127.0.0.1处理
cache_peer 127.0.0.1 parent 8080 0 originserver name=wwwnav
cache_peer_domain wwwnav 2.ss.com
cache_peer_domain wwwnav 2.tt.com
cache_peer_domain wwwnav 120.53.56.170
cache_peer_domain wwwnav 2.ww.com
#[集群一]:当用户访问http://120.53.56.170/tst/account/login.html实际是请求到:http://1.1.1.81/tst/account/login.html
cache_peer 1.1.1.81 parent 80 0 no-query originserver name=test1bl
cache_peer_domain test1bl 120.53.56.170
#[集群二]
cache_peer 1.1.1.83 parent 80 0 no-query originserver name=test2bl
cache_peer_domain test2bl 120.53.56.171
---------
acl all src 0.0.0.0/0.0.0.0
http_access allow all
#允许所有客户端访问
--------- 权限设置
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
#acl all src all
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl SSL_ports port 443
acl Safe_ports port 80 # http
#acl Safe_ports port 8080 # lt http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow all
icp_access allow localnet
icp_access allow all
htcp_access allow localnet
htcp_access allow all
---------
cache_log /var/log/squid/cache.log
#记录日志
#***********ACL存取控制*************
acl QueryString url_regex \.php?
#***********缓冲存取控制*************
no_cache deny QueryString
#不对符合QueryString的ACL内容进行缓冲
#***********性能优化配置 *************
hierarchy_stoplist cgi-bin ?
cache_mem 1024 MB
cache_dir ufs /usr/local/squid-3.0.STABLE26/var/cache 10240 16 512
access_log /usr/local/squid-3.0.STABLE26/var/logs/access.log squid
coredump_dir /usr/local/squid-3.0.STABLE26/var/cache
######
maximum_object_size 4096 KB #大于此容量的对象将不会被保存在磁盘上 ,默认大小是4M,如果squid服务器用于缓冲flash等大型文件,建议将此值变大.否则过大的文件在下次重启后将需要重新获取
minimum_object_size 0 KB
maximum_object_size_in_memory 1024 KB #最大位于内存中的对象的大小,默认大小是8K,如果服务器内存很大.可以适当提高此值的大小,建议根据网站的80%图片的大小来定.或者根据WEB服务器实际存取文件中最常访问的文件大小来定制
acl static_content urlpath_regex -i \.js$ \.css$ \.html$ \.png$ \.gif$ \.swf$ \.jpg$
no_cache deny !static_content #no_cache deny ** --设置不记入缓存
######
cache_store_log /usr/local/squid-3.0.STABLE26/var/logs/store.log
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
icp_port 3130
---------- refresh_pattern 缓存时间
refresh_pattern 的语法是:
refresh_pattern [-i] regexp min percent max [options]
min, max的单位是分钟,percent就是百分比。
refresh_pattern 的算法如下:(当前时间定义为CURRENT_DATE)
1) If ((CURRENT_DATE-DATE(就是LM里定义的时间)) < min),cache是新鲜的
2) else if ((CURRENT_DATE-DATE) < (min + (max-min)*percent ),cache是新鲜的
3) else cache是过期的
cache过期就需要从后面server取新鲜内容。
如果希望页面一进入cache就不删除,直到被主动purge掉为止,可以加上ignore-reload选项
一般情况可以使用 reload-into-ims。
举例:
refresh_pattern -i \\.gif$ 1440 50% 2880 ignore-reload
refresh_pattern -i \\.jpg$ 1440 50% 2880 ignore-reload
refresh_pattern -i \\.png$ 1440 50% 2880 ignore-reload
refresh_pattern -i \\.mp3$ 1440 50% 2880 ignore-reload
refresh_pattern -i \\.wmv$ 1440 50% 2880 ignore-reload
refresh_pattern -i \\.rm$ 1440 50% 2880 ignore-reload
refresh_pattern -i \\.swf$ 1440 50% 2880 ignore-reload
refresh_pattern -i \\.mpeg$ 1440 50% 2880 ignore-reload
refresh_pattern -i \\.wma$ 1440 50% 2880 ignore-reload
refresh_pattern -i \\.css$ 10 50% 60 reload-into-ims
refresh_pattern -i \\.js$ 10 50% 60 reload-into-ims
refresh_pattern -i \\.xml$ 10 50% 30 reload-into-ims
reload-into-ims 该选项让squid在确认请求里,以no-cache指令传送一个请求。换句话说,squid在转发请求之前,对该请求增加一个If-Modified-Since头部。注意这点仅仅在目标有Last-Modified时间戳时才能工作。外面进来的请求保留no-cache指令,以便它到达原始服务器。
----------