acl allowuser 192.168.1.1/32 cache_peer 192.168.1.50 parent 81 0 no-query originserver weight=1 name=a cache_peer 192.168.1.50 parent 82 0 no-query originserver weight=1 name=b cache_peer 192.168.1.50 parent 80 0 no-query originserver weight=1 name=c cache_peer_domain a www.serverA.com cache_peer_domain b www.serverB.com cache_peer_domain c www.serverC.com #以上六行配置表示: #从客户端过来的请求,如果是 www.serverA.com,则Squid向 Server 192.168.1.50的端口81发送请求; #从客户端过来的请求,如果是 www.serverB.com,则Squid向 Server 192.168.1.50的端口82发送请求; #从客户端过来的请求,如果是 www.serverC.com,则Squid向 Server 192.168.1.50的端口80发送请求; #换句话说:设定不同域名转发到不同的cache_peer上,如果没有这项.不同的域名可能被分发到同一台服务 器(或同一台服务器的端口)上. #name=a表示给cache_peer一个别名 cache_peer_access a allow all cache_peer_access b allow all cache_peer_access c allow all #设置访问权限,允许所有外部客户端访问 a b c #如果是cache_peer_access a allow allowuser #表示只允许allowuser访问 www.serverA.com 另一个例子: acl user1 src 192.168.2.68/32 acl user2 src 192.168.2.94/32 #定义两个user IP cache_peer 192.168.2.172 parent 80 0 no-query no-digest originserver name=www1 sourcehash cache_peer 192.168.2.173 parent 81 0 no-query no-digest originserver name=www2 sourcehash cache_peer_domain www1 www. cache_peer_domain www2 www. #表明对www.的请求,squid向192.168.2.172的80端口和192.168.2.173的81端口发出请求 cache_peer_access www1 allow user1 cache_peer_access www2 allow user2 #允许user1访问192.168.2.172的80端口 #允许user2访问192.168.2.173的81端口 设置子父代理的cache_peer: 如果要设置父级的代理服务器,例如proxy.test.edu.cn那么可以这样配置 在#cache_peer hostname type 3128 3130 之下加入 cache_peer proxy.test.edu.cn parent 3128 3130 no-query no-netdb-exchange
如果要设置同级的代理服务器,如:192.168.1.41 192.168.1.42则可以这样来配置 cache_peer 192.168.1.41 sibling 3128 3130 proxy-only .... 注意目前各单位施行代理服务器分级管理,设置父级代理服务器,还必须取得上层单位的同意
说明: (1)命令cache_peer的定义格式是: cache_peer hostname type 3128 3130 hostname 是用来指定获取缓冲的PROXY主机的名字 type 是PROXY主机的类型,有以上PARENT SIBLING两种 3128:HTTP_PORT 3130:ICP_PORT
(2)附加配置选项(注意应为小写,配置时) NO-QUERY:不做查询操作,直接获取数据 NO-NETDB-EXCHANGE:代理服务器之间不交互信息 NO-DIGEST:代理服务器之间不做摘要表查询,直接用ICP协议沟通(同级代理) PROXY-ONLY:直接获取对方缓冲,转交给代理服务器的客户端,而不存入本地 ROUND-ROBIN:如果设置数部上层服务器,那么轮流查询父级服务器 LOGIN=USER:PASSWD:要求对方做账号及密码验证,例如 cache_peer 192.168.1.41 sibling 3128 3130 login=kao:123456 举例: Cache_peer的理解
1) cache_peer邻居分为parent(父邻居),sibling(子邻居).parent和sibling的区别在于父邻居能为子cache转发丢失的Cache,而子邻居不可能.
Squid代理服务器介绍及相关配置一、代理服务器的作用 1.通过缓存的方式为用户提供Web访问加速 2.对用户的Web访问进行过滤控制 二、代理服务器分类 1.普通代理服务 即标准的、传统的代理服务 需要客户机在浏览器中指定代理服务器的地址、端口 2.透明代理服务 适用于企业的网关主机(共享接入Internet)中 客户机不需要指定代理服务器地址、端口等信息 需要设置防火墙策略将客户机的Web访问数据转交给代理服务程序处理 3. 反向代理服务 为Internet用户访问企业Web站点提供缓存加速 三、squid 基本配置 1.所需软件包 软件包名:squid-2.6.STABLE6(版本可能不一样) 服务名:squid 主程序:/usr/sbin/squid 配置目录:/etc/squid/ 主配置文件:/etc/squid/squid.conf 默认监听端口:TCP 3128 默认访问日志文件:/var/log/squid/access.log 2.主配置文件squid.conf 常用配置项 http_port 3128 //默认监听端口 cache_mem 64 MB //缓存所占的内存空间大小,建议为物理内存的1/4—1/3 maximum_object_size 4096 KB //最大缓存对象大小 reply_body_max_size 10240000 allow all //限定最大请求的文件大小 单位是字节 allow al表示允许所有人的请求 access_log /var/log/squid/access.log squid //访问日志 visible_hostname proxy.test.com //反向解析自己的ip地址 以获得主机名 cache_dir ufs /var/spool/squid 100 16 256 //定义缓存目录 数据存储格式 缓存到的目录 为缓存目录分配的磁盘空间(MB) 缓存空间的一级子目录个数 二级子目录个数 3.普通代理的相关配置 按照上面的常用配置项修改主配置文件 测试语法 # squid –k parse 初始化squid缓存目录 # squid –z 启动squid 服务 # service squid start 接下来需要在客户机上做相应的代理设置,如下图所示 服务器的地址(192.168.1.1)、端口(3128) 验证代理服务器功能 在客户机的浏览器上访问某个站点(外网测试机ip 218.29.30.29 ),网页访问成功后,检查代理服务器的日志文件,应发现客户机的HTTP访问记录 [root@localhost ~]# tail -1 /var/log/squid/access.log 1244386040.208 62 192.168.1.100 TCP_MISS/200 2828 GET http://218.29.30.29/icons/apache_pb2.gif – DIRECT/218.29.30.29 image/gif 检查外网测试机的Web访问日志,应发现进行访问的是代理服务器主机(218.29.30.31),而不是客户机 [root@gw1 ~]# tail -1 /var/log/httpd/access_log 218.29.30.31 – - [16/May/2009:12:39:39 +0800] “GET /icons/apache_pb2.gif HTTP/1.0″ 200 2414 “http://218.29.30.29″ “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 1.0.3705; aff-kingsoft-ciba)” 4.配置透明代理 实现透明代理的基本条件 前提:(1)客户机的Web访问数据要能经过防火墙 (2)代理服务构建在网关(防火墙)主机中 配置要求:(1)代理服务程序能够支持透明代理 (2)设置防火墙规则,将客户机的Web访问数据自动重定向给代理服务程序处理 基本实现步骤 (1)修改squid.conf配置文件,并重新加载该配置 http_port 192.168.10.1:8080 transparent 注意:不要忘了定义规则,因为默认是拒绝所有的。规则可以这样定义: acl myacl src 192.168.0.0/255.255.255.0 http_access allow myacl (2)添加iptables规则 # iptables -t nat -I PREROUTING -i eth1 -s 192.168.10.0/24 -p tcp –dport 80 -j REDIRECT –to-ports 8080 (3)客户机浏览器 不需要在浏览器中指定代理服务器的地址、端口 (4)验证透明代理的实施效果 5.配置反向代理 (1)拓扑图: (2)基本实现步骤 修改squid.conf文件,并重新加载该配置 语法:cache_peer Web服务器地址 服务器类型 http端口 icp端口 [可选项] http_port 218.29.30.31:80 vhost cache_peer 192.168.10.7 parent 80 0 originserver weight=5 max-conn=30 cache_peer 192.168.10.8 parent 80 0 originserver weight=5 max-conn=30 cache_peer 192.168.10.9 parent 80 0 originserver weight=5 max-conn=30 cache_peer 192.168.10.6 parent 80 0 originserver weight=1 max-conn=8 (3)验证反向代理的实施效果 在上游Web服务器(192.168.10.6~192.168.10.9)中开启httpd服务 在Internet中的客户机(218.29.30.29)中访问反向代理服务器主机(http://218.29.30.31),应能够看到实际由上游Web服务器提供的网页内容 查看反向代理服务器的访问日志信息 [root@localhost ~]# tail -1 /var/log/squid/access.log 1231256531.038 35 218.29.30.29 TCP_MISS/200 2869 GET http://218.29.30.31/index.php? – FIRST_UP_PARENT/192.168.10.6 image/gif 6. ACL访问控制 (1)ACL(Access Control List,访问控制列表) 可以从客户机的IP地址、请求访问的URL/域名/文件类型、访问时间、并发请求数等各方面进行控制 (2)应用访问控制的方式 定义acl列表 acl 列表名称 列表类型 列表内容 … 常用的acl列表类型 src dst port srcdomain dstdomain time maxconn url_regex urlpath_regex ACL列表定义示例 acl LAN1 src 192.168.10.0/24 acl PC1 src 192.168.10.12/32 acl Blk_Domain dstdomain .qq.com acl Work_Hours time MTWHF 08:30-17:30 acl Max20_Conn maxconn 20 acl Blk_URL url_regex -i ^rtsp:// ^mms:// acl Blk_Words urlpath_regex -i sex adult acl RealFile urlpath_regex -i \.rmvb$ \.rm$ 针对acl列表进行限制 http_access allow或deny 列表名…… 根据已经定义的部分ACL列表进行访问控制 http_access deny LAN1 Blk_URL http_access deny LAN1 Blk_Words http_access deny PC1 RealFile http_access deny PC1 Max20_Conn http_access allow LAN1 Work_Hours 访问控制规则的匹配顺序 没有设置任何规则时,将拒绝所有客户端的访问请求 有规则但找不到相匹配的项时,将采用与最后一条规则相反的权限,即如果最后一条规则是allow,那么就拒绝客户端的请求,否则允许该请求 Centos 6.4下用Squid配置反向代理多个内网WEB服务器http_port 80 accel vport visible_hostname bogon cache_mem 128 MB maximum_object_size_in_memory 2048 KB memory_replacement_policy lru cache_dir ufs /usr/local/squid/var/cache/squid 512 16 256 access_log /usr/local/squid/var/logs/access.log cache_log /usr/local/squid/var/logs/cache.log max_open_disk_fds 0 minimum_object_size 0 KB maximum_object_size 32768 KB #logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h""%{User-Agent}>h" %Ss:%Sh cache_peer 192.168.20.17 parent 80 0 no-query no-digest originserver name=oa cache_peer 10.19.113.3 parent 80 0 no-query no-digest originserver name=ob #需要反向代理的源WEB服务器,可以添加多个 ,若只有一个源WEB服务器,可不设name #需要反向代理的源WEB服务器,可以添加多个 cache_peer_domain oa oa.XXX.com.cn cache_peer_domain ob ob.XXX.com.cn #若只有一个源WEB服务器,可不设cache_peer_domain http_access allow all cache_effective_user nobody cache_effective_group nobody cache_mgr zifu.199s0@163.com #refresh_pattern ^ftp: 60 20% 10080 #refresh_pattern ^gopher: 60 0% 1440 #refresh_pattern ^gopher: 60 0% 1440 #refresh_pattern . 0 20% 1440 refresh_pattern -i \.css$ 360 50% 2880 refresh_pattern -i \.js$ 1440 50% 2880 refresh_pattern -i \.html$ 720 50% 1440 refresh_pattern -i \.jpg$ 1440 90% 2880 refresh_pattern -i \.gif$ 1440 90% 2880 refresh_pattern -i \.swf$ 1440 90% 2880 refresh_pattern -i \.jpg$ 1440 50% 2880 refresh_pattern -i \.png$ 1440 50% 2880 refresh_pattern -i \.bmp$ 1440 50% 2880 refresh_pattern -i \.doc$ 1440 50% 2880 refresh_pattern -i \.ppt$ 1440 50% 2880 refresh_pattern -i \.xls$ 1440 50% 2880 refresh_pattern -i \.pdf$ 1440 50% 2880 refresh_pattern -i \.rar$ 1440 50% 2880 refresh_pattern -i \.zip$ 1440 50% 2880 refresh_pattern -i \.txt$ 1440 50% 2880
Linux下配置反向代理,实现一个公网IP代理多个内网的web服务器。 |
|