Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> 電腦軟件教程 >> 服務器技術 >> 代理服務器 >> Windows下配置Squid反向代理服務器

Windows下配置Squid反向代理服務器

日期:2017/1/21 9:48:56      編輯:代理服務器

Squid是一款類Unix系統下非常流行的服務器軟件,其最重要的功能就是在客戶端和服務端之間建立緩存。因而Squid可以用作反向代理,部署多級緩存或者搭建CDN等,無論名稱是什麼,本質上都是一樣的。目前Windows下也有Squid的移植版本,可以應對使用Windows環境的場景。這裡是下載地址和文檔,如果需要了解Squid技術細節可以看看《Squid: The Definitive Guide》這本書的翻譯版本。

一、安裝Squid

如果下載Binaries版本,直接解壓到c:\squid。這是軟件的默認安裝路徑,如果需要安裝到其他路徑下,則需要修改更多配置文件中關於路徑的配置項,另外安裝路徑不能有空格,官方建議配置文件中對於路徑的配置采用斜槓“/”代替“\”(由於類Unix系統使用“/”),即配置文件中對於路徑c:\squid應該寫成c:/squid。

接下來找到c:\squid\etc目錄,將cachemgr.conf.default,mime.conf.default,squid.conf.default三個文件復制改為cachemgr.conf,mime.conf,squid.conf。這些是Squid配置文件,其中squid.conf則是基礎,後面的工作更多的是修改這個文件。

在cmd中使用命令c:\squid\sbin\squid -i -n ServerName(當然可以將c:\squid\sbin加入系統的環境變量,以免輸入那麼長的命令路徑)。其中“ServerName”可以自定義,如果名稱中包含空格,請用使用雙引號。例如:c:\squid\sbin\squid -i -n "Server Name"。在cmd中隨時可以使用c:\squid\sbin\squid -h 查看關於命令參數的幫助。

image

對於默認的配置文件,我們先命令net start SquidProxy啟動Squid看看(SquidProxy是在安裝Squid服務時起的名字,在services.msc中可以查看),但是會出現一些問題,服務無法啟動,這是可以通過c:\squid\sbin\squid.exe.log和c:\squid\var\cache.log日志查看出現的問題。

一般情況下是c:\squid\var\cache目錄沒有建立,可以手工在目錄下建立;或者swap directories沒有建立,可以使用命令c:\squid\sbin\squid -z建立。這時服務可以正常啟動了。

image

 

二、配置Squid

接下裡主要配置c:\squid\etc\squid.conf這個文件。強烈建議使用Notepad++等文本工具進行編輯(可以輕松高亮相同詞匯),以便減輕查找的配置項的難度。

配置之前需要明確需求並搭建滿足該需求的網絡環境,下面以配置Web反向代理服務器為例討論Squid的配置:該反向代理服務器將作為Web服務器的代理和緩存層,這裡假設外網地址為222.0.0.0/24(客戶端訪問),內網地址為172.16.0.0/24(用於Squid服務與Web站點之間或者Squid服務之間通信,這裡用Squid服務和Web站點的提法,而不是Squid服務器和Web服務器,原因是一台服務器上可能有多個Squid服務或Web站點,我們假設一台服務器上只有一個Squid服務或Web站點)。

考慮有以下幾種場景:

場景1:單站點代理,Squid服務A(222.0.0.10, 172.16.0.10)為Web站點A(172.16.0.20)提供反向代理服務,這是最簡單的場景,squid.conf配置關鍵項可以簡單如下:

#建立一個名稱為(all),客戶端地址(src)為任意(all)的訪問控制列表(acl)。
acl all src all
#允許(allow)名稱為(all)的控制列表訪問Squid服務
http_access allow all
#設置80端口為Squid服務監聽客戶端訪問的端口
http_port 80
#建立一個名稱為(abc)的緩存點,其上級(parent)為Web站點A(172.16.0.20:80),該Web站點是源服務器(originserver)
cache_peer 172.16.0.20 parent 80 0 no-query originserver name=abc

場景2:多站點代理,Squid服務A(222.0.0.10, 172.16.0.10)為Web站點A(172.16.0.20)和Web站點B(172.16.0.30)同時提供反向代理服務,假設Web站點A域名www.a.com和Web站點B域名www.b.com都指向222.0.0.10,squid.conf配置關鍵項如下:

#建立一個名稱為(aclweba),服務端域名(dstdomain)為(www.a.com)的訪問控制列表(acl)
acl aclweba dstdomain www.a.com
acl aclwebb dstdomain www.b.com
#允許(allow)名稱為(aclweba)的訪問控制列表訪問
http_access allow aclweba 
http_access allow aclwebb 
#設置80端口為Squid服務監聽客戶端訪問的端口,加速模式(vhost),將轉發主機頭至後端服務器
http_port 80 vhost
#建立一個名稱為(weba)的緩存點,其上級(parent)為Web站點A(172.16.0.20:80),該Web站點是據服務器(originserver) 
cache_peer 172.16.0.20 parent 80 0 no-query originserver name=weba
cache_peer 172.16.0.30 parent 80 0 no-query originserver name=webb
#將緩存點(weba)限制為域名(www.a.com)訪問,即使用www.a.com才能訪問Web站點A,有點IIS中主機頭名的意思
cache_peer_domain weba www.a.com
cache_peer_domain webb www.b.com
#允許(allow)名稱為(aclweba)的訪問控制列表訪問緩存點(weba)
cache_peer_access weba allow aclweba 
cache_peer_access webb allow aclwebb 
#設置緩存使用內存大小
cache_mem 1024 MB
#設置存儲路徑,存儲格式(ufs),總緩存大小(10240MB),一級緩存(16MB),二級緩存(253MB)
cache_dir ufs c:/squid/var/cache 10240 16 256

場景3:實現Web站點負載均衡,Squid服務A(222.0.0.10, 172.16.0.10)為部署在不同服務器上的多個Web站點A:Web站點A1(172.16.0.20)和Web站點A2(172.16.0.30)提供反向代理服務,實現負載均衡,假設Web站點A域名www.a.com指向222.0.0.10,squid.conf配置關鍵項如下:

#建立一個名稱為(aclweba),服務端域名(dstdomain)為(www.a.com)的訪問控制列表(acl)
acl aclweba dstdomain www.a.com
#也可以建立允許所有人訪問的訪問控制列表(acl),可以建立針對諸如來源IP(src)、目的IP(dst)、目的域名(dstdomain)等的訪問控制列表。
#acl aclweba src all
#允許(allow)名稱為(aclweba)的訪問控制列表訪問
http_access allow aclweba
#設置80端口為Squid服務監聽客戶端訪問的端口,加速模式(vhost),將轉發主機頭至後端服務器
http_port 80 vhost
#建立名稱分別為(weba1、weba2)的緩存點,通過輪詢(round-robin)訪問其上級(parent)Web站點A1(172.16.0.20:80)或Web站點A2(172.16.0.20:80),這些Web站點是源服務器(originserver) 
cache_peer 172.16.0.20 parent 80 0 no-query originserver round-robin name=weba1
cache_peer 172.16.0.30 parent 80 0 no-query originserver round-robin name=weba2
#設置緩存使用內存大小
cache_mem 1024 MB
#設置存儲路徑,存儲格式(ufs),總緩存大小(10240MB),一級緩存(16MB),二級緩存(253MB)
cache_dir ufs c:/squid/var/cache 10240 16 256

場景4:在場景3的基礎上增加Squid服務A2(222.0.0.11, 172.16.0.11),與Squid服務A實現負載均衡(簡單的可以通過DNS輪詢機制),兩個Squid服務配置基本一致,還需在配置中各增加Squid服務A和Squid服務A2互為鄰居,並開放相關端口。

#建立一個名稱為(aclweba),服務端域名(dstdomain)為(www.a.com)的訪問控制列表(acl)
acl aclweba dstdomain www.a.com
#也可以建立允許所有人訪問的訪問控制列表(acl),可以建立針對諸如來源IP(src)、目的IP(dst)、目的域名(dstdomain)等的訪問控制列表。
#acl aclweba src all
#建立一個名稱為(localnet),來源IP為(172.16.0.0/24)的訪問控制列表(acl),供內部通信
acl localnet src 172.16.0.0/24
#允許(allow)名稱為(aclweba)的訪問控制列表http訪問
http_access allow aclweba
#允許(allow)名稱為(localnet)的訪問控制列表icp訪問
icp_access allow localnet
#設置80端口為Squid服務監聽客戶端訪問的端口,加速模式(vhost),將轉發主機頭至後端服務器
http_port 80 vhost
#設置3130為Squid服務器將的通訊端口
icp_port 3130
#Squid服務互為鄰居,通過ICP查詢其他Squid服務中自己沒有的緩存
cache_peer 172.16.0.10 sibling 80 3130 
cache_peer 172.16.0.11 sibling 80 3130
#建立名稱分別為(weba1、weba2)的緩存點,通過輪詢(round-robin)訪問其上級(parent)Web站點A1(172.16.0.20:80)或Web站點A2(172.16.0.20:80),這些Web站點是源服務器(originserver)
cache_peer 172.16.0.20 parent 80 0 no-query originserver round-robin name=weba1
cache_peer 172.16.0.30 parent 80 0 no-query originserver round-robin name=weba2
#設置緩存使用內存大小
cache_mem 1024 MB
#設置存儲路徑,存儲格式(ufs),總緩存大小(10240MB),一級緩存(16MB),二級緩存(253MB)
cache_dir ufs c:/squid/var/cache 10240 16 256

每次修改完配置無需重啟服務,使用命令 c:\squid\sbin\squid -k reconfigure -n SquidProxy使服務生效。

要強行卸載服務可以net stop SquidProxy停止服務後sc delete SquidProxy卸載。

Copyright © Windows教程網 All Rights Reserved