使用Squid配置反向代理服務(wù)器
配置反向代理服務(wù)器確保企業(yè)網(wǎng)絡(luò)服務(wù)安全
反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受Internet上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給Internet上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個服務(wù)器。
值得注意的是:通常的代理服務(wù)器,只用于代理內(nèi)部網(wǎng)絡(luò)對Internet的連接請求,客戶機必須指定代理服務(wù)器,并將本來要直接發(fā)送到Web服務(wù)器上的http請求發(fā)送到代理服務(wù)器中。由于外部網(wǎng)絡(luò)上的主機并不會配置并使用這個代理服務(wù)器,普通代理服務(wù)器也被設(shè)計為在Internet上搜尋多個不確定的服務(wù)器,而不是針對Internet上多個客戶機的請求訪問某一個固定的服務(wù)器,因此普通的Web代理服務(wù)器不支持外部對內(nèi)部網(wǎng)絡(luò)的訪問請求。
當一個代理服務(wù)器能夠代理外部網(wǎng)絡(luò)上的主機,訪問內(nèi)部網(wǎng)絡(luò)時,這種代理服務(wù)的方式稱為反向代理服務(wù)。此時代理服務(wù)器對外就表現(xiàn)為一個Web服務(wù)器,外部網(wǎng)絡(luò)就可以簡單把它當作一個標準的Web服務(wù)器而不需要特定的配置。不同之處在于,這個服務(wù)器沒有保存任何網(wǎng)頁的真實數(shù)據(jù),所有的靜態(tài)網(wǎng)頁或者CGI程序,都保存在內(nèi)部的Web服務(wù)器上。因此對反向代理服務(wù)器的攻擊并不會使得網(wǎng)頁信息遭到破壞,這樣就增強了Web服務(wù)器的安全性。
反向代理方式和包過濾方式或普通代理方式并無沖突,因此可以在防火墻設(shè)備中同時使用這兩種方式,其中反向代理用于外部網(wǎng)絡(luò)訪問內(nèi)部網(wǎng)絡(luò)時使用,正向代理或包過濾方式用于拒絕其他外部訪問方式并提供內(nèi)部網(wǎng)絡(luò)對外部網(wǎng)絡(luò)的訪問能力。因此可以結(jié)合這些方式提供最佳的安全訪問方式。
目前有許多反向代理軟件,比較有名的有 Nginx 和 Squid 。其他還包括Socks、Apache、Jigsaw、Delegate等。
使用Squid配置反向代理服務(wù)器
Squid作為反向代理服務(wù)器使用時,其工作原理為:客戶端請求訪問 Web 服務(wù)時,DNS 將訪問的域名解析為 Squid 反向代理服務(wù)器的 IP 地址,這樣客戶端的 URL 請求將被發(fā)送到反向代理服務(wù)器。如果 Squid 反向代理服務(wù)器中緩存了該請求的資源,則將該請求的資源直接返回給客戶端,否則反向代理服務(wù)器將向后臺的 Web 服務(wù)器請求資源,然后將請求的應(yīng)答返回給客戶端,同時也將該應(yīng)答緩存在本地,供下一個請求者使用。
Squid反向代理一般只緩存可緩沖的數(shù)據(jù)(比如 HTML網(wǎng)頁和圖片等),而一些 CGI 腳本程序或者 ASP、JSP 之類的動態(tài)程序默認不緩存。它根據(jù)從 Web 服務(wù)器返回的 HTTP 頭標記來緩沖靜態(tài)頁面。有四個最重要HTTP頭標記:
Last-Modified:告訴反向代理頁面什么時間被修改
Expires:告訴反向代理頁面什么時間應(yīng)該從緩沖區(qū)中刪除
Cache-Control:告訴反向代理頁面是否應(yīng)該被緩沖
Pragma:用來包含實現(xiàn)特定的指令,最常用的是Pragma:no-cache
要配置反向代理服務(wù)器,需要在squid的主配置文件里面添加如下內(nèi)容:
http_port 80 accel vhost vport
cache_peer 192.172.1.133 parent 80 0 no-query originserver
cache_peer_domain www.test.com 192.172.1.133
acl sites dstdomain www.test.com
http_access allow sites
http_access deny all
cache_dir ufs /var/spool/squid3 100 16 256
cache_mgr yourmail@somesite.com
cache_mem 64 MB
maximum_object_size_in_memory 1028 KB
access_log /var/log/squid3/access.log squid
上述配置的詳細解釋如下:
http_port 80 accel vhost vpor:指定Squid所服務(wù)的端口為80,vhost和vport指的是所采用的虛擬主機的方式:基于IP地址和基于端口的;
cache_peer 192.172.1.133 parent 80 0 no-query originserver:指定真實Web Server的IP地址;
cache_peer_domain www.test.com 192.172.1.133:告訴反向代理服務(wù)器,當客戶端有對www.test.com的訪問請求時,需要從真實Web Server 192.172.1.133上取得數(shù)據(jù);
acl sites dstdomain www.test.com:定義客戶端能夠通過反向代理服務(wù)器訪問的主機;
http_access allow sites、http_access deny all:限制客戶端通過反向代理服務(wù)器能夠訪問的范圍;
cache_dir ufs /var/spool/squid3 100 16 256、cache_mgr yourmail@somesite.com、cache_mem 64 MB、maximum_object_size_in_memory 1028 KB、access_log /var/log/squid3/access.log squid:代理服務(wù)器的常規(guī)配置。






















