|
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發(fā)送請求; #從客戶端過來的請求,如果是 www.serverB.com,則Squid向 Server 192.168.1.50的端口82發(fā)送請求; #從客戶端過來的請求,如果是 www.serverC.com,則Squid向 Server 192.168.1.50的端口80發(fā)送請求; #換句話說:設(shè)定不同域名轉(zhuǎn)發(fā)到不同的cache_peer上,如果沒有這項.不同的域名可能被分發(fā)到同一臺服務(wù) 器(或同一臺服務(wù)器的端口)上. #name=a表示給cache_peer一個別名 cache_peer_access a allow all cache_peer_access b allow all cache_peer_access c allow all #設(shè)置訪問權(quán)限,允許所有外部客戶端訪問 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端口發(fā)出請求 cache_peer_access www1 allow user1 cache_peer_access www2 allow user2 #允許user1訪問192.168.2.172的80端口 #允許user2訪問192.168.2.173的81端口 設(shè)置子父代理的cache_peer: 如果要設(shè)置父級的代理服務(wù)器,例如proxy.test.edu.cn那么可以這樣配置 在#cache_peer hostname type 3128 3130 之下加入 cache_peer proxy.test.edu.cn parent 3128 3130 no-query no-netdb-exchange
如果要設(shè)置同級的代理服務(wù)器,如:192.168.1.41 192.168.1.42則可以這樣來配置 cache_peer 192.168.1.41 sibling 3128 3130 proxy-only .... 注意目前各單位施行代理服務(wù)器分級管理,設(shè)置父級代理服務(wù)器,還必須取得上層單位的同意
說明: (1)命令cache_peer的定義格式是: cache_peer hostname type 3128 3130 hostname 是用來指定獲取緩沖的PROXY主機的名字 type 是PROXY主機的類型,有以上PARENT SIBLING兩種 3128:HTTP_PORT 3130:ICP_PORT
(2)附加配置選項(注意應(yīng)為小寫,配置時) NO-QUERY:不做查詢操作,直接獲取數(shù)據(jù) NO-NETDB-EXCHANGE:代理服務(wù)器之間不交互信息 NO-DIGEST:代理服務(wù)器之間不做摘要表查詢,直接用ICP協(xié)議溝通(同級代理) PROXY-ONLY:直接獲取對方緩沖,轉(zhuǎn)交給代理服務(wù)器的客戶端,而不存入本地 ROUND-ROBIN:如果設(shè)置數(shù)部上層服務(wù)器,那么輪流查詢父級服務(wù)器 LOGIN=USER:PASSWD:要求對方做賬號及密碼驗證,例如 cache_peer 192.168.1.41 sibling 3128 3130 login=kao:123456 舉例: Cache_peer的理解
1) cache_peer鄰居分為parent(父鄰居),sibling(子鄰居).parent和sibling的區(qū)別在于父鄰居能為子cache轉(zhuǎn)發(fā)丟失的Cache,而子鄰居不可能.
Squid代理服務(wù)器介紹及相關(guān)配置一、代理服務(wù)器的作用 1.通過緩存的方式為用戶提供Web訪問加速 2.對用戶的Web訪問進行過濾控制 二、代理服務(wù)器分類 1.普通代理服務(wù) 即標(biāo)準的、傳統(tǒng)的代理服務(wù) 需要客戶機在瀏覽器中指定代理服務(wù)器的地址、端口 2.透明代理服務(wù) 適用于企業(yè)的網(wǎng)關(guān)主機(共享接入Internet)中 客戶機不需要指定代理服務(wù)器地址、端口等信息 需要設(shè)置防火墻策略將客戶機的Web訪問數(shù)據(jù)轉(zhuǎn)交給代理服務(wù)程序處理 3. 反向代理服務(wù) 為Internet用戶訪問企業(yè)Web站點提供緩存加速 三、squid 基本配置 1.所需軟件包 軟件包名:squid-2.6.STABLE6(版本可能不一樣) 服務(wù)名:squid 主程序:/usr/sbin/squid 配置目錄:/etc/squid/ 主配置文件:/etc/squid/squid.conf 默認監(jiān)聽端口:TCP 3128 默認訪問日志文件:/var/log/squid/access.log 2.主配置文件squid.conf 常用配置項 http_port 3128 //默認監(jiān)聽端口 cache_mem 64 MB //緩存所占的內(nèi)存空間大小,建議為物理內(nèi)存的1/4—1/3 maximum_object_size 4096 KB //最大緩存對象大小 reply_body_max_size 10240000 allow all //限定最大請求的文件大小 單位是字節(jié) 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 //定義緩存目錄 數(shù)據(jù)存儲格式 緩存到的目錄 為緩存目錄分配的磁盤空間(MB) 緩存空間的一級子目錄個數(shù) 二級子目錄個數(shù) 3.普通代理的相關(guān)配置 按照上面的常用配置項修改主配置文件 測試語法 # squid –k parse 初始化squid緩存目錄 # squid –z 啟動squid 服務(wù) # service squid start 接下來需要在客戶機上做相應(yīng)的代理設(shè)置,如下圖所示 服務(wù)器的地址(192.168.1.1)、端口(3128) 驗證代理服務(wù)器功能 在客戶機的瀏覽器上訪問某個站點(外網(wǎng)測試機ip 218.29.30.29 ),網(wǎng)頁訪問成功后,檢查代理服務(wù)器的日志文件,應(yīng)發(fā)現(xiàn)客戶機的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 檢查外網(wǎng)測試機的Web訪問日志,應(yīng)發(fā)現(xiàn)進行訪問的是代理服務(wù)器主機(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.配置透明代理 實現(xiàn)透明代理的基本條件 前提:(1)客戶機的Web訪問數(shù)據(jù)要能經(jīng)過防火墻 (2)代理服務(wù)構(gòu)建在網(wǎng)關(guān)(防火墻)主機中 配置要求:(1)代理服務(wù)程序能夠支持透明代理 (2)設(shè)置防火墻規(guī)則,將客戶機的Web訪問數(shù)據(jù)自動重定向給代理服務(wù)程序處理 基本實現(xiàn)步驟 (1)修改squid.conf配置文件,并重新加載該配置 http_port 192.168.10.1:8080 transparent 注意:不要忘了定義規(guī)則,因為默認是拒絕所有的。規(guī)則可以這樣定義: acl myacl src 192.168.0.0/255.255.255.0 http_access allow myacl (2)添加iptables規(guī)則 # iptables -t nat -I PREROUTING -i eth1 -s 192.168.10.0/24 -p tcp –dport 80 -j REDIRECT –to-ports 8080 (3)客戶機瀏覽器 不需要在瀏覽器中指定代理服務(wù)器的地址、端口 (4)驗證透明代理的實施效果 5.配置反向代理 (1)拓撲圖: (2)基本實現(xiàn)步驟 修改squid.conf文件,并重新加載該配置 語法:cache_peer Web服務(wù)器地址 服務(wù)器類型 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服務(wù)器(192.168.10.6~192.168.10.9)中開啟httpd服務(wù) 在Internet中的客戶機(218.29.30.29)中訪問反向代理服務(wù)器主機(http://218.29.30.31),應(yīng)能夠看到實際由上游Web服務(wù)器提供的網(wǎng)頁內(nèi)容 查看反向代理服務(wù)器的訪問日志信息 [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/域名/文件類型、訪問時間、并發(fā)請求數(shù)等各方面進行控制 (2)應(yīng)用訪問控制的方式 定義acl列表 acl 列表名稱 列表類型 列表內(nèi)容 … 常用的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 列表名…… 根據(jù)已經(jīng)定義的部分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 訪問控制規(guī)則的匹配順序 沒有設(shè)置任何規(guī)則時,將拒絕所有客戶端的訪問請求 有規(guī)則但找不到相匹配的項時,將采用與最后一條規(guī)則相反的權(quán)限,即如果最后一條規(guī)則是allow,那么就拒絕客戶端的請求,否則允許該請求 Centos 6.4下用Squid配置反向代理多個內(nèi)網(wǎng)WEB服務(wù)器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服務(wù)器,可以添加多個 ,若只有一個源WEB服務(wù)器,可不設(shè)name #需要反向代理的源WEB服務(wù)器,可以添加多個 cache_peer_domain oa oa.XXX.com.cn cache_peer_domain ob ob.XXX.com.cn #若只有一個源WEB服務(wù)器,可不設(shè)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下配置反向代理,實現(xiàn)一個公網(wǎng)IP代理多個內(nèi)網(wǎng)的web服務(wù)器。 |
|
|