1,安装
     
  rpm -ivh
 
2,初步配置文件
 
[root@xxw conf]# cat /etc/squid/squid.conf
http_port 192.168.0.151:3128                        #监听客户机请求
cache_mem 64 MB                                         #设置一部分内存为高速缓冲区
cache_dir ufs /uar/spool/squid 4096 16 256       #设置硬盘存储位置,大小(4096MB),一级目录数目(16),二级目录数目(256)
cache_effective_user squid                              #设定缓存有效用户和组
cache_effective_group squid
dns_nameservers 202.106.0.20                        #设定DNS,为了DNS能解析域名
cache_access_log /var/log/squid/access.log         #设置访问日志文件
cache_log /var/log/squid/cache.log                     #设置缓存日志文件
cache_store_log /var/log/squid/store.log              #设置了网页在缓存中调用情况日志文件
visible_hostname 192.168.16.1                            #定义主机名
cache_mgr 345013657@qq.com                           #定义管理员联系方式
acl all src 0.0.0.0/0.0.0.0                                   #设置访问列表,默认是拒绝所有。所以要开放
http_access allow all
 
3,创建squid使用硬盘缓冲区的目录结构
/usr/abin/squid -z
 
4,设置squid错误提示信息为中文
 
mv /etc/squid/errors /etc/squid/errors.bak
ln -s /usr/share/squid/errors/Simplify_Chinese /etc/squid/errors
/etc/init.d/squid reload
 
5,设置访问控制列表
 
由于squid是按照顺序读取访问控制列表的,因此把拒绝所有放在最后:
acl all src src 0.0.0.0/0.0.0.0 
http_access deny all
 
6,acl举例
 
acl badclientpl src 192.168.16.200
http_access  deny  badclientpl
定义了一个名叫badclientpl的ACL,类型为src源IP地址方式。
然后用http_access禁止该列表
 
acl badclientpl dst 192.168.16.200
http_access  deny  badclientpl
禁止用户访问这个目的网站
 
acl badclientpl url_regex -i 163.com
http_access  deny  badclientpl
禁止用户访问域名包含有163.com的网站
 
acl qq url_regex -i qq
http_access  deny  qq
禁止用户访问QQ(禁止用户访问URL中含有qq的网站)
 
7,实现透明代理:squid和NAT结合
在squid.conf的ACL访问控制语句前加上四条关键语句:
http_accel_host virtual       #用来定义squid加速模式,这里用virtual 来指定为虚拟主机模式,加速端口为80
http_accel_port 80
http_accel_with_proxy_on  #既是WEB请求加速器,又是缓存代理服务器
http_accel_uses_host_header on
 
配置iptables,将80端口的请求转发到8080端口
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
然后在主机上开启内核转发:
sysctl -w "net.ipv4.ip_forward=1"