1. 如果不想缓存某个文件或某个url
例子:不缓存结尾为 .htm 的地址
acl BAD_URL url_regex -i /.htm$
no_cache deny BAD_URL
2.禁止某种类型的文件下载
acl deny_exe url_regex -i /.reg$ /.scr$ /.ani$
http_access deny deny_exe
3.禁止访问某个网站
acl bad_net dst www.sex.com
acl bad_net2 dstdomain www.sex.com
http_access deny bad_net
http_access deny bad_net2
4.禁止通过ip 访问主机
acl IPForHostname dstdom_regex ^[0-9]+/.[0-9]+/.[0-9]+/.[0-9]+$
http_access deny IPForHostname
5.对于非常繁忙的cache 需要增加系统的文件描述符的限制(系统一般是1024)
可以在squid 启动文件中增加 ulimit -u 4096
6.你也能使用http_port 指令来使squid 侦听在指定的接口地址上。当squid 作为防火墙运
行时,它有两个网络接口:一个内部的和一个外部的。你可能不想接受来自外部的http请
求。为了使squid 仅仅侦听在内部接口上,简单的将IP 地址放在端口号前面:
http_port 192.168.1.1:3128
7.squid 不会自动轮转日志,有些系统规定文件大小不能超过2G,你可以在crontab 中设置 每天
0点 轮转日志:0 0 * * * /usr/sbin/squid -k rotate
轮转日志的个数由 配置文件中的 logfile_rotate 决定
logfile_rotate 5 表示保存5个
8.禁止qq通过http代理登陆
a)打开qq登陆窗口->设置->网络设置
类型:http代理
地址:192.168.1.1(你的squid代理地址) 端口:3128(squid使用的端口)
填写完后,点 测试 按钮
b)之后查看 access.log
192.168.1.253 - - [08/Feb/2008:22:57:04 +0800] "CONNECT http.tencent.com:443 HTTP/1.1" 200 39 TCP_MISS:DIRECT
可以看到 qq是通过 http.tencent.com 中的 443端口 的代理服务器
c)在配置文件中禁止该域名的访问
acl deny_qq_proxy dst http.tencent.com
acl deny_qq_proxy2 dstdomain http.tencent.com
http_access deny deny_qq_proxy
http_access deny deny_qq_proxy2
d)重启动squid 后 再使用http代理上qq,查看access.log 日志:
192.168.1.253 - - [08/Feb/2008:23:07:40 +0800] "CONNECT http.tencent.com:443 HTTP/1.1" 403 1494 TCP_DENIED:NONE
已经不能连接了
9.使squid 带认证功能
ncsa 认证:
auth_param basic program /usr/libexec/squid/ncsa_auth /etc/squid/ncsa_auth
auth_param basic children 10
auth_param basic realm My Awesome Squid Cache
auth_param basic credentialsttl 1 hour
acl KnownUsers proxy_auth REQUIRED
http_access allow KnownUsers
其中 密码文件(/etc/squid/ncsa_auth) 由apache的 htpasswd2 -c etc/squid/ncsa_auth 产生
注意:启用了认证功能,就不能使用透明代理,需要修改2个地方
a) 浏览器必须设置通过代理上网
b)http_port 3128 transparent 更改为:http_port 3128 (取消透明代理)
ldap认证:
auth_param basic program /usr/libexec/squid/squid_ldap_auth -u cn -b "ou=Group,dc=it,dc=com" -v 3
acl authuser proxy_auth REQUIRED
http_access allow authuser
说明:
-u cn :就是Group组下面的cn用户
详细可以在bash #squid_ldap_auth -help 查看
ldap必须有cn用户例子(建立dn,请查看ldap相关文档):
dn: cn=zyh,ou=Group,dc=it,dc=com
objectClass: posixGroup
objectClass: top
cn: zyh
gidNumber: 1001
userPassword: {CRYPT}/NzX26DI5l97o
注意:启用了认证功能,就不能使用透明代理,需要修改2个地方
a) 浏览器必须设置通过代理上网,出现认证窗口
输入用户: zyh
密码:就是 ldap中的 userPasword中的密码
b)http_port 3128 transparent 更改为:http_port 3128 (取消透明代理)