squid代理网关笔记
作者: Jeffrey
出处:http://blog.zhangjianfeng.com/?p=630
squid代理网关笔记
++最简单办法开启代理服务:
editting /usr/local/squid/etc/squid.conf,locate “http_access deny all”and change to “http_access allow all”
++WEB方式简单管理
/usr/lib/squid/cachemgr.cgi下有个脚本cachemgr.cgi(Default path on redhat series),把它拷贝到你的Web的cgi-bin目录下(Apache安装后默认的web根是/var/www),通过浏览器运行,可以进入web方式的一些管理。
++ACL 声明的格式如下:
acl acl_element_name type_of_acl_element values_to_acl
下面列出一些重要的 ACL类型(type_of_acl_element)
src : 源地址(即客户机IP地址)
dst : 目标地址(即服务器IP地址)
srcdomain : 源名称 (即客户机名称)
dstdomain : 目标名称 (即服务器名称)
time : 一天中的时刻和一周内的一天
url_regex : URL 规则表达式匹配
urlpath_regex: URL-path 规则表达式匹配,略去协议和主机名
proxy_auth : 通过外部程序进行用户验证
maxconn : 单一 IP 的最大连接数
++只有地址为192.168.100.10和192.168.100.100的终端可以使用代理
acl authorizedip src 192.168.100.10
acl authorizedip src 192.168.100.100
http_access allow authorizedip #在http_access deny all前添加
# 如果需要设置的IP地址非常多,又不连续,可以写到指定文件
# acl aclname acltype “file” … #the file should contain one item per line
acl authorizedip src “/etc/squid/authorizedip.txt”
++根据时间控制
# 定义一个访问时间段:每周星期一到星期五的上午八点到下午五点,允许alloweduser用户在这个时间段内上网
acl work_time time MTWHF 9:00-18:00 #关于时间定义说明见squid.conf
http_access allow alloweduser work_time
http_access deny alloweduser
#要保证客户端与服务器的时间一致。
++控制特定URL地址
acl unallowed dstdomain .xxxsex.net .xxxpic.com.cn #支持将控制列表写在文件里
http_access deny alloweddomain #注意这行的位置
++根据url关键字过滤网址
acl denyurl url_regex sex boylink xxx city69 asiaadult sehu #支持读取文件
http_access deny denyurl
++限制部分类型的文件下载读取
acl download urlpath_regex -i \.mp3$ \.exe$ \.avi$ \.rar$ \.rvmb$ \.jpg$
acl work_time MTWHF 9:00-18:00 #上班时间有限制,下班即取消限制
http_access deny download worktime # 05 不允许下载的特定url字符:exe/zip等等;
++squid支持pop3和smtp吗
不支持,但可以用sendmail这类建一个代理邮件服务器,我就是这么做的.
++定义禁止缓存类型
hierarchy_stoplist cgi-bin ?
#hierarchy_stoplist -i ^https:\\ ?
acl QUERY urlpath_regex -i cgi-bin \? \.asp \.php \.jsp \.cgi #-i即忽略大小写
#acl denyssl urlpath_regex -i ^https:\\
no_cache deny QUERY
#no_cache deny denyssl
++squid是否继续传输被用户中断的请求
quick_abort_min 16 KB #剩余部分小于16KB,squid将继续完成剩余部分的传输
quick_abort_max 16 KB #剩余部分大于16KB…..
quick_abort_pct 95 #如果已完成95%,squid将继续完成剩余部分的传输
++限制每个用户的并发连接为3个
acl conncount maxconn 3
http_access deny conncount normal
http_access allow normal
++其它配置
error_directory /usr/local/squid/share/errors/Simplify_Chinese #错误提示文件目录
cache_mgr admin@zhangjianfeng.com #管理员信箱
icp_port 0 #取消对代理阵列的支持
http_port 3128 #端口
pid_filename /var/run/squid.pid
dns_nameservers 10.0.0.1 192.172.0.4 #强制squid使用该列表中的DNS服务器而非使用/etc/resolv.conf文件中定义的DNS服务器
client_lifetime 1 hours (minutes,hours,days,weeks…) #设置客户在与squid建立连接后,可以将该连接保持多长时间。
visible_hostname proxy.zhangjianfeng.com #定义在返回给用户的出错信息中的主机名
emulate_httpd_log on #使用apache格式的日志
cache_dir ufs /var/spool/squid 1000 16 256 #缓存目录定义,后三位为size L1 L2
cache_effective_user squid
cache_effective_group squid
++access.log解读
1189400672.680 106 192.168.202.129 TCP_CLIENT_REFRESH_MISS/304 201 GET http://www.zhangjianfeng.com/img/biaoshi.gif - DIRECT/60.28.111.38 -
第1列,1189400672.680是从1970到现在的经过的时间秒数(毫级,”.”是千位分隔符),可用perl转换成易读的.或启用emulate_httpd_log on
perl -pe ’s/^\d+\.\d+/localtime($&)/e;’ access.log
第2列,是请求处理花费的时间数
++日志切割
添加logfile_rotate 0到squid.conf
添加0 0 * * * $squidexecpath/squid -k rotate
++其它
可查看access.log,得到tcp_mem_hit(内存命中),tcp_hit(缓存命中),tcp_miss(重取资源)数据
关于使用squid做反向代理(WEB加速),见以前的笔记 http://blog.zhangjianfeng.com/?p=531
Last modified at: Monday, November 26th, 2007 11:48:00 pmTrackback URL: http://blog.zhangjianfeng.com/article/630/trackback
Tags: squid, 代理网关, 安全网关, 服务器, 笔记, 配置





















好难啊