1.squid三种代理特点:
squid普通代理:需要客户机在浏览器中指定代理服务器的地址、端口。
squid透明代理:适用于企业的网关主机;客户机不需要指定代理服务器地址、端口等信息;通过iptables将客户机的web访问数据转交给代理服务程序处理。squid反向代理:为internet用户访问企业web站点提供缓存加速。
2.安装:源码:tar xf squid-3.3.5.tar.bz2 && cd squid-3.3.5./configure ‘–prefix=/usr/local/squid’ ‘–enable-gnuregex’ ‘–enable-dlmalloc’ ‘–enable-debug-cbdata’ ‘–enable-async-io=100′ ‘–with-pthreads’ ‘–enable-storeio=aufs,diskd,ufs’ ‘–enable-removal-policies=heap,lru’ ‘–enable-icmp’ ‘–enable-delay-pools’ ‘–enable-useragent-log’ ‘–enable-referer-log’ ‘–disable-wccp’ ‘–disable-wccpv2′ ‘–enable-kill-parent-hack’ ‘–enable-arp-acl’ ‘–enable-snmp’ ‘–enable-default-err-language=Simplify_Chinese’ ‘–enable-err-languages=Simplify_Chinese English’ ‘–disable-poll’ ‘–enable-epoll’ ‘–disable-ident-lookups’ ‘–disable-internal-dns’ ‘–enable-truncate’ ‘–enable-underscores’ ‘–enable-basic-auth-helpers=NCSA’ ‘–enable-stacktrace’ ‘–with-winbind-auth-challenge’ ‘–enable-large-cache-files’ ‘–with-large-files’ ‘–with-maxfd=65535′ ‘–enable-x-accelerator-vary’ –enable-ltdl-convenience && make && make install启动/关闭:/usr/local/squid/sbin/squid start|stop重载配置:/usr/local/squid/sbin/squid -k reconfigure
yum:yum install -y squid启动/关闭:service squid start|stop重载配置:squid -k reconfigure
3.配置信息:交换空间设定选项cache_dir ufs /var/spool/squid 100M 16 256 #设置缓存数据时使用的交换空间参数,总大小为100M,16个目录,每个目录下有256个子目录,可以指定多次cache_swap_low 90cache_swap_high 95说明:squid使用大量的交换空间来存储对象。那么,过了一定的时间以后,该交换空间就会用完,所以还必须定期的按照某种指标来将低于某个水平 线的对象清除。squid使用所谓的“最近最少使用算法”(LRU)来做这一工作。当已使用的交换空间达到cache_swap_high时,squid 就根据LRU所计算的得到每个对象的值将低于某个水平线的对象清除。这种清除工作一直进行直到已用空间达到cache_swap_low。这两个值用百分 比表示,如果你所使用的交换空间很大的话,建议你减少这两个值得差距,因为这时一个百分点就可能是几百兆空间,这势必影响squid的性能。maximum_object_size 4096KB #允许保存到高速缓存的最大文件大小cache_mem 64MB #设置用于缓存功能的内存空间大小,一般为物理内存的1/4-1/3reply_body_max_size 10240000 allow all #允许用户下载的最大文件大小,默认单位为字节
日志的选项cache_access_log /usr/local/squid/var/logs/cache_access.log combined #指定客户请求记录日志的完整路径cache_store_log /usr/local/squid/var/logs/cache_store.log #指定对象存储记录日志的完整路径,该记录表明哪些对象被写到交换空间,哪些对象被从交换空间清除。cache_log /var/log/squid/cache.log 指定squid一般信息日志的完整路径access_log /var/log/squid/access.log squid #指定日志文件的保存位置和记录格式用户访问控制选项request_size 100KB 设置用户请求通讯量的最大允许值(单位为KB)。如果用户用POST方法请求时,应该设一个较大的值reference_age说明:squid根据对象的LRU(最近最少使用算法)来清除对象,squid依据使用磁盘空间的总量动态地计算对象的LRU年龄。我们用 reference_age定义对象的最大LRU年龄。如果一个对象在指定的reference_age内没有被访问,squid将删除该对象。缺省值为 一个月。你可以使用如下所示的时间表示方法。1 week3.5 days4 months2.2 hours
管理参数选项cache_mgr root 设置管理员邮件地址cache_effective_user squid #启动squid的用户cache_effective_group squid #启动squid的组visible_hostname proxy.benet.com #设置代理服务器可用的完整主机名unique_hostname 如果你有一个代理服务器阵列,并且你为每个代理服务器指定了同样的“visible_hostname”,同时你必须为它们指定不同的“unique_hostname”来避免“forwarding loops ”(传输循环)发生
其他选项http_port 3128 #指定代理服务监听的地址和端口dns_testnames www.google.com #测试squid开机启动后是否能正常工作memory_pools on|off #如果设置为on,squid将保留所有已经分配(但未使用)的内存池以便在将来使用。log_icp_queries on|off #是否对icp请求作日志,如果系统负载过大,可以off,默认为on
4.ACL访问控制:ACL,访问控制列表,可以从客户机的ip地址、请求访问的url、域名、文件类型、访问时间、并发请求数等各方面进行控制。定义acl列表:acl 列表名称 列表类型 列表内容限制acl列表:http_access allow或deny 列表名称eg:acl all src 0.0.0.0/0.0.0.0http_access deny all列表类型:src 源ip eg:acl lan1 src 192.168.1.0/24dst 目的ipport 端口srcdomain 源域名dstdomain 目的域名 eg:acl blk_domain dstdomain .qq.com .kaixin001.comtime 时间 eg:acl work_hours time MTWHF 08:30-17:30maxconn 最大连接 eg:acl max20_conn maxconn 20url_regex url正则过滤 eg:acl blk_url url_regex -i ^rtsp:// ^mms://urlpath_regex urlpath正则过滤 eg :acl realfile urlpath_regex -i \.rmvb$ \.rm$ sexacl列表访问控制:(acl列表可以联合)http_access deny lan1 blk_url (拒绝lan1的ip访问^rtsp:// ^mms://)acl访问权限http_access allow|deny 列表名
5.实验:squid 传统代理基本配置:yum -y install squid*vim /etc/squid/squid.confhttp_port 192.168.1.77:3128 #指定服务端口visible_hostname 192.168.1.77 #报错时显示服务器的名称acl innet src 192.168.1.0/24 #名称为innet的ip群体acl all src 0.0.0.0/0.0.0.0 #其它ip群体http_access allow innet #允许innet群体http_access deny all #拒绝all群体
squid 透明代理基本配置:acl all src 0.0.0.0/0.0.0.0http_port 网关内网IP:3128 transparenthttp_access allow all
iptables -t nat -I PREROUTING -i eth0 -p tcp –dport 80 -j REDIRECT –to-ports 3128
squid 反向代理基本配置:http_port 200.168.10.1:80 accelcache_peer 192.168.10.2 parent 80 0 originserver weight=5 max-conn=30cache_peer 192.168.10.3 parent 80 0 originserver weight=5 max-conn=30cache_peer 192.168.10.4 parent 80 0 originserver weight=5 max-conn=30cache_peer 192.168.10.5 parent 80 0 originserver weight=5 max-conn=30#cache_peer server地址 服务器类型 http端口 icp端口 [可选项]visible_hostname 200.168.10.1acl all src 0.0.0.0/0.0.0.0http_access allow all
反向代理虚拟主机映射:http_port 200.168.10.1:80 accelcache_peer 192.168.10.2 parent 80 0 originserver name=acache_peer 192.168.10.3 parent 80 0 originserver name=bcache_peer_domain a www.lamp.comcache_peer_domain b www.web.comcache_peer_access a allow allcache_peer_access b allow all
6.缓存查看:通过查看web服务器的访问日志,状态为304表示,通过缓存代理服务器下通过/var/spool/aquid/ 下tree命令,查看文件数,如果有缓存文件,则通过head 00000000X 查看缓存数据。客户端通过firefox的firebug插件来查看请求和响应头信息,如果是从缓存服务器取得数据,则可以看到squid信息。