squid生成的文件
/etc/NetworkManager/dispatcher.d/20-squid
控制脚本。
/etc/httpd/conf.d/squid.conf
squid的web管理界面的配置文件。
/etc/logrotate.d/squid
squid日志滚动的配置文件。
/etc/pam.d/squid
squid的pam认证相关的配置文件。
/etc/rc.d/init.d/squid
squid的服务脚本。
/etc/squid
squid配置文件所在目录,在该目录中所有以default结尾的文件均为配置文件的备份文件。
/etc/squid/cachemgr.conf
与squid的web管理页面相关的配置文件。
/etc/squid/errorpage.css
错误页面的样式表的配置文件。
/etc/squid/mime.conf
支持的媒体类型的配置文件。
/etc/squid/msntauth.conf
基于msnt认证的配置文件。
/etc/squid/squid.conf
squid的主配置文件。
/etc/sysconfig/squid
squid的服务脚本的配置文件。
/usr/bin/squidclient
squid客户端管理工具,能够通过命令行的方式获取squid的运行信息,但是依赖于squid的web页面,实质上就是squid的文件的web。
/usr/lib64/squid/
squid所需的库文件所在的目录。
/usr/sbin/squid
squid的命令工具。
/usr/share/doc/squid-3.1.23
squid的相关文档。
/usr/share/squid/errors
squid的不同语言的错误页面,主要用于squid的web页面中。
/usr/share/squid/icons
squid的web页面中所使用的图标所在的目录。
/var/log/squid
squid的日志所在的目录。
/var/spool/squid
缓存数据所存放的目录。
配置文件中的指令:
acl manager proto cache_object
cache_object是squid的专有的控制缓存的协议,设置一个访问控制列表,其表名为manager。
acl localhost src 127.0.0.1/32 ::1
设置一个名为localhost的访问控制列表,这个访问控制列表仅限制来源ip在127.0.0.1/32网段内的主机。
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
是指一个名为to_localhost的访问控制列表,这个访问控制列表仅限制访问的目标ip为127.0.0.0/8网段内的主机。
acl SSL_ports port 443
定义一个名为SSL_ports的访问控制列表,用于定义443端口的。
acl CONNECT method CONNECT
定义一个名为CONNECT的访问控制列表,用于控制http的请求的方法,而CONNECT也是http的方法之一。
http_access allow manager localhost
允许名为manager和localhost的访问列表中的规则。
http_access deny manager
拒绝名为manager中的访问列表中的规则。
http_access deny !Safe_ports
拒绝访问Safe_ports定义的端口以外的目标端口。
http_port 3128
定义squid监听的代理端口,此处的http_port也可以使用IP:port的形式指定。
cache_dir ufs /var/spool/squid 100 16 256
定义缓存目录的位置为/var/spool/squid下,ufs用于定义缓存使用的机制,同时定义缓存允许使用空间为100m,
一级子目录为16个,每个一级子目录下生成二级子目录为256个。
coredump_dir /var/spool/squid
定义内核转储目录,当squid内存中的缓存与磁盘上那些目录中的数据进行交换。
refresh_pattern ^ftp: 1440 20% 10080
定义缓存的过期校验参数,1440即为缓存最少存活时长,如果缓存存放时长小于1440则一定不会被清除,10080为缓存最长时长,
如果缓存存活的时长超出10080则一定被清除。
squid [option]
[option]:
-f:以指定的配置文件启动,默认读取/etc/squid/squid.conf作为启动配置文件。
-k:向squid传递一个参数。
reconfigure:重新载入配置文件。
rotate:日志滚动。
shutdown:停止squid服务。
interrupt:立即关闭squid,哪怕当前有连接仍然关闭。
kill:发送kill信号给squid进程。
debug:调试模式。
check:简单的检查运行中的squid进程。
parse:检查squid的配置文件中是否有语法错误,并输出生效的配置。
-v:显示squid的版本信息。
-z:初始化缓存,并在/var/spool/squid/目录下生成指定的缓存目录。
-N:指定squid运行在前台。
acl to_net
dst 0.0.0.0
acl local_net src 192.168.1.0/24
语法:
acl ACL_NAME ARGUMENTS STRINGS
ACL_NAME:定义的当前的访问控制列表的名字。
TYPE STRINGS:定义类型与类型相对应的字符串,
例如:
<src|dst> <ip|net|host|domain_name>...
<srcdomain|dstdomain> <domain_name>...
需要注意的是尽管src和srcdomain都允许通过域名的方式实现控制,但src的关键字中仍然使用的是域名对应的IP进行访问控制
,如果在一次解析中squid已经将域名以及当前所对应的ip缓存下载,当域名与ip的对应关系变更后,src则无法实现访问控制。
acl safe port 443 80
http_access allow safe
port <port|port1-port2>...
控制访问原始服务器的端口。
acl dan method PUT
http_access deny dan
method <GET|PUT|POST|DELETE...>...
定义访问目标主机的的方法。
protocol <http|ftp|https>...
定义访问目录主机的协议。
acl network time 12:00-13:30
http_access allow network
time <DAY #1-#2>
DAY用于定义周几,S(sunday)、M(monday)、T(tuesday)、W(wednesday)、H(thursday)、F(friday)、A(saturday)、D(all weekdays),
#1-#2用于定义每天具体的时间段,时间段的定义需要使用24小时制来指定,#1小于#2,#1-#2所指定的时间段仅在某一天内的时间段。
maxconn #
定义来自于客户端的最大连接数。
acl web_browser browser ie6
http_access deny web_browser
browser BROWSER_NAME
定义访问的浏览器的类型。
acl QQ url_regex .*qq.*
http_access deny QQ
url_regex URI_REGEX
定义以正则表达式匹配URL中的任何部分,如:
acl bbs url_regex -i ^ftp://.*/.jpg$
注意:acl仅用于定义访问列表,而真正实现访问控制的是通过http_access <deny|allow>来实现的。