安装Squid 不指定

jed , 2011-4-28 14:44 , 服务器技术 , 评论(0) , 阅读(6149) , Via 本站原创

[root@localhost]#./configure --prefix=/usr/local/server/squid --enable-async-io=100 --disable-delay-pools --disable-mem-gen-trace --disable-useragent-log --enable-kill-parent-hack --disable-arp-acl --enable-epoll --disable-ident-lookups --enable-snmp --enable-large-cache-files --with-large-files
[root@localhost]#make && make install

或使用如下安装方法:

[root@localhost]#yum install squid

如果是2.6的内核,才能支持epoll的IO模式,旧版本的内核则只能选择poll或其他模式了;另外,记得带上支持大文件的选项,否则在access
log等文件达到2G的时候就会报错。设定 squid 的配置大概如下内容:
Tags:
本人一台web服务器,日流量约10万,上面有好几个虚拟主机,近日装上Squid 2.6进行WEB加速,Squid 和Apache均在同一台服务器上面,效果非常明显,看到论坛上好多人问如何配置squid2.6支持,虚拟主机
现在将安装过程贴出和大家一起分享,给菜鸟们一个学习机会和老鸟们一个批评指正的机会
一,测试环境
1,硬件是奔腾双核,机子三年前买的。系统是archlinux

2,测试varnish和squid的时候,web服务用的apache

3,测试apache的时候,启动了5个进程,不过随着压力的增加,进程会增加的。

4,测试nginx的时候,启动了十个nginx进程,20个php-cgi进程

5,varnish,squid,nginx用的是反向代理的形势,也就是说访问图片的时候,要先透过缓存工具

二,测试
1,varnish
[root@BlackGhost bin]# /usr/local/bin/webbench -c 100 -t 20 http://127.0.0.1:8080/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://127.0.0.1:8080/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
100 clients, running 20 sec.

Speed=476508 pages/min, 47258114 bytes/sec.
Requests: 158836 susceed, 0 failed.

访问了这么次,没有缓存只有一次,效率真的很高。

2,squid
[root@BlackGhost bin]# /usr/local/bin/webbench -c 100 -t 20 http://localhost:9000/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
Webbench – Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.

Benchmarking: GET http://localhost:9000/00/01/RwGowEtWvcQAAAAAAAAWHH0Rklg81.gif
100 clients, running 20 sec.

Speed=133794 pages/min, 7475018 bytes/sec.
Requests: 44598 susceed, 0 failed.

从测试效果来说,squid挺让我失望的,在测试前,我心里是这样估计的,缓存最好的是varnish,其次是squid,然后nginx,最后是apache,现在呢,squid是最差的。后来我看了一下log文件,发现正常情况下,缓存和没有缓存的比率不是1:2,如果在高压力下,缓存和没有缓存的比率更小。

squid刷新缓存 不指定

jed , 2011-4-28 13:00 , 服务器技术 , 评论(0) , 阅读(4237) , Via 本站原创
Squid会在设置的缓存目录下建立多个目录,每一个目录下又建立多个目录,然后才在最里层的目录中存放缓存文件(object)。squid会根据用户请求网页的URL进行哈希,生成缓存文件,存放在某一个目录中。squid启动之后,将在内存中建立一个哈希表,记录硬盘中缓存文件配置的情形。对于静态网页,squid只会生成一个缓存文件

squid编译参数说明 不指定

jed , 2011-4-28 12:50 , 服务器技术 , 评论(0) , 阅读(2889) , Via 本站原创

./configure --prefix=/usr/local/squid \
--disable-carp \
--with-aufs-threads=32 \
--with-pthreads \
--enable-storeio='ufs,aufs' \
--enable-disk-io='AIO,Blocking' \
--enable-removal-policies='heap,lru' \
--disable-wccp \
--enable-kill-parent-hack \
--disable-snmp \
--disable-poll \
--disable-select \
--enable-auth=basic \
--with-aio \
--disable-ident-lookup \
--with-filedescriptors=65536



编译选项注解:
--prefix=/usr/local/squid    //指定安装路径
--enable-arp-acl             //这样可以在规则设置中直接通过客户端的MAC地址进行管理,防止客户使用IP欺骗
--enable-async-io=80         //这个主要是设置async模式来运行squid,如果服务器配置很不错,有1G以上内存,cpu使用SMP的方式的话可以考虑设成160或者更高,如果服务器比较糟糕就根据实际情况设了,另外此项还使cache文件支持aufs
--enable-auth-modules        //此编译选项启用认证模块,可以对访问代理用户进行授权;
--enable-cache-digests       //使能缓存摘要,本来此项目的是为了在Squid集群服务之间迅速发现缓存对象,这里在本地使用,可以加快请求时,检索缓存内容的速度;
--enable-err-language="Simplify_Chinese" 和--enable-default-err-languages="Simplify_Chinese" //指定出错是显示的错误页面为简体中文
--enable-delay-pools           //此选项使能一个延时池,这样能对某些特定的请求限制额定带宽。
--enable-gnuregex              //由于Squid大量使用字符串处理做各种判断,加此项能更好处理。
--enable-icmp                  //加入icmp支持
--disable-ident-lookups        //防止系统使用RFC931规定的身份识别方法。 --enable-kill-parent-hack      //关掉suqid的时候,连同父进程一起关掉 13.--enable-linux-netfilter       //允许使用Linux的透明代理功能。
--enable-poll                  //应启用Poll()函数而不是select()函数,通常而言poll(轮询)比select要好,但configure(脚本程序)已知Poll在某些平台下失效, 若你认为你比configure编译配置脚本程序要聪明的话,可以用这个选项启用Poll。总之就是用这个可以提升性能
--enable-snmp                 //此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测;
--enable-storeio=ufs,null     //使用的文件系统通常是默认的ufs,不过如果想要做一个不缓存任何文件的代理服务器,就需要加上null文件系统;
--enable-underscore           //允许解析的URL中出现下划线,因为默认squid会认为带下划线的URL地址是非法的,并拒绝访问该地址;
编辑/etc/rc.local,加入iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE,外网口eth1为dhcp获得IP。

进入本机的数据包为INPUT,从本机发送出去的数据包为OUTPUT,只是路由的包为FORWARD;防火墙就是基于这3个过滤点来操作的。

对于包的操作有:目标(Target)、丢弃(DROP)、接受(ACCEPT)、弹回(REJECT)、日志(LOG)……等等,比如iptables -A INPUT -p icmp -j DROP(-A代表添加到的过滤点 -p针对的协议类型;此条命令的作用是禁ping),通常是拒绝所有,再一个一个的打开。

iptables -F 清空所有规则
iptables -F   #清除所有规则
iptables -X  #清除所有自定义规则
iptables -Z   #各项计数归零
iptables -P INPUT DROP  #将input链默认规则设置为丢弃
iptables -P OUTPUT DROP  #将output链默认规则设置为丢弃
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT #对运行在本机回环地址上的所有服务放行
iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT  #把这条语句插在input链的最前面(第一条),并且对状态为ESTABLISHED,RELATED的连接放行。
以下是来自 http://wiki.ubuntu.org.cn/IptablesHowTo 上的配置说明

可以通过/sbin/iptables -F清除所有规则来暂时停止防火墙: (警告:这只适合在没有配置防火墙的环境中,如果已经配置过默认规则为deny的环境,此步骤将使系统的所有网络访问中断)

如果想清空的话,先执行
/sbin/iptables -P INPUT ACCEPT
然后执行
/sbin/iptables -F
通过iptables -L 看到如下信息
Chain INPUT (policy DROP 0 packets, 0 bytes) (注意 是DROP)
执行/sbin/iptables -F就肯定立马断开连接
当执行了
/sbin/iptables -P INPUT ACCEPT
再次通过iptables -L看信息的话就是
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
所以现在是可以安全使用
/sbin/iptables -F了

——————————————————————
开始配置 我们来配置一个filter表的防火墙.
(1)查看本机关于IPTABLES的设置情况
限制单个IP并发TCP连接的方法适应于保护Linux上的各种TCP服务,使用iptables
中patch-o-matic中iplimit补丁来实现,对各种TCP服务比较通用。
做法:
配置Linux核心,使用2.4.20,并使用www.netfilter.org中patch-o-matic中的
base补丁中的iplimit。编译配置安装新核心。
使用www.netfilter.org的 iptables 1.2.8,安装到系统中。

示例:
1 限制连往本机的telnet单个IP并发连接为2个,超过的连接被拒绝:

iptables -I INPUT -p tcp --dport 23 -m iplimit --iplimit-above 2 -j REJECT  

2 限制连往本机的web服务,1个C段的IP的并发连接不超过100个,超过的被拒绝:

iptables -I INPUT -p tcp --dport 80 -m iplimit --iplimit-above 100 \ --iplimit-mask 24 -j REJECT
分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]