由于最近要对公司网络进行优化,经过研究使用squid对网络进行正向代理来增加速度.
一、squid命令
平时常用的squid的常用操作有八个(该版本也是网上来回转载较多的):
1、初始化squid.conf 里配置的cache目录
/App/squid/sbin/squid-z//初始化缓存空间
如是想观察整个过程,请增加-X参数,即:squid -zX 。如果有错误提示,请检查你的 cache目录的权限。
2、对squid.conf排错,即验证squid.conf的语法和配置。
/App/squid/sbin/squid-k parse
如果squid.conf 有语法或配置错误,这里会返回提示。如果没有返回,如果没有返回则启动成功
3、在前台启动squid,并输出启动过程。
/App/squid/sbin/squid-N-d1
如果有到 ready to server reques,恭喜,启动成功。然后 ctrl + c,停止squid,并以后台运行的方式启动它。
4、启动squid在后台运行。
/App/squid/sbin/squid-s
启动squid,并将日志记录到syslog进程。
5、停止 squid
/App/squid/sbin/squid-k shutdown
最安全的停止squid的方法,另外还有 -k interrupt 与-k kill命令也用于关闭squid,其之间的区别会在squid的参数中讲到。
6、重引导修改过的 squid.conf
/App/squid/sbin/squid-k reconfigure//载入新的配置文件
这个估计用的时候比较多,当你发现你的配置有不尽你意的时候,可以随时修改squid.conf,然后别忘记对你的 squid.conf排错,然后再执行此指令,即可让squid重新按照你的 squid.conf 来运行。
7、轮循日志
/App/squid/sbin/squid-k rotate
每次执行squid -k rotate时,Squid轮循下列文件:cache.log, access.log, store.log, useragent.log (假如已激活), 以及referer.log (假如已激活)。
同时,Squid也会创建最新版本的swap.state文件。然而请注意,swap.state不会以数字扩展形式来轮转。
另外,要特别提示一下swap.state文件。当squid应用运行了一段时间以后,cache_dir对应的swap.state文件就会变得越来越大,里面的无效接口数据越来越多,这可能在一定程度上影响squid的响应时间,此时我们可以使用rotate命令来使squid清理swap.state里面的无效数据,减少swap.state的大小。
8、把squid添加到系统启动项
编辑 /etc/rc.d/rc.local 添加如下行:
/App/squid/sbin/squid-sD
9、squid_start脚本
/usr/local/squid/sbin/squid-sD && squid -sD
10、自制启动脚本
#!/bin/bash
case $1 in
start)
/usr/local/squid/sbin/squid -s
;;
stop)
/usr/local/squid/sbin/squid -k shutdown
;;
easc
11、计划任务运行轮训日志
squid -k rotate//日志轮训
0 4 * * * * /usr/local/squid/sbin/squid -k rotate .//凌晨4点运行日志轮训
二、访问控制
1、ACL元素是squid的访问控制的基础。这里告诉你如何指定包括IP、端口、主机名、url匹配变量。每个ACL元素都有个名字在编写访问规则的时候需要引用,基本元素如下:
acl name type value1 value2 value3
acl workstation src 10.0.0./16
2、多数情况下,ACL元素列举多个值。可以多个acl使用多个名字,配置是等价
acl http_ports port 80 8000 8080
acl httpd_ports port 80
acl httpd_ports port 8000
acl httpd_ports port 8080
3、IP地址
使用对象:src,dst,myip
squid在ACL里指定ip地址时,可以以子网、地址范围、域名等形式编写。
acl foo src 10.0.0.0/24
acl foo src 10.0.0.0/255.255.255.0
acl foo src 10.0.0.1
4、主机名
指定主机名
acl xxx dstwww.cgmb.com.cn
5、匹配域名
指定域名
acl a dstdomain foo.com
acl b dstdomain foo.com
6、正则表达式
适用对象:srcdom_regex, dstdom_regex, url_regex, urlpath_regex, browser, referer_regex, ident_regex, proxy_auth_regex, req_mime_type, rep_mime_type
^字符匹配行或者字符开头
^http:// . 表达式匹配任意http://开头
\.jpg$ . 表达式匹配jpg结尾,反斜杠为转意符
实例:acl foo url_regex -i ^http://www (-i 参数不区分大小写)
7、TCP端口号
acl foo port 123
acl foo port 1024-5000
三、ACL类型
1.src
ip地址在访问控制元素普遍使用,大部分站点使用ipl来做访问限制,src类型指定客户端ip源,也就是说,当src出现在acl控制列表里面时,squid将它与发布的请求ip做对比
单子网:acl mynetwork src 192.168.0.0/24
多子网:acl mynetwork src 192.68.0.1/24 10.0.0.0/24
2.dst
原始服务器地址
acl adserver dst 1.2.3.4/24
3.myip
myip指squid本身ip地址
acl admin myip 1.1.1.1
4.myport
squid加速器配置
acl accport myport 80
acl proxyport myport 3128
5.method请求类型
method acl 指请求http请求方法。GET、POST
acl purge method purge
acl localhost src 127.0.0.1
http_access allow purge localhost
http_access deny purge
6.proto
协议类型
acl FTP proto FTP
7.maxconn
每个用户最大连接数
acl overconn maxconn 4
http_access deny overconn