使用Squid配置反向代理服務器
配置反向代理服務器確保企業網絡服務安全
反向代理(Reverse Proxy)方式是指以代理服務器來接受Internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給Internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。
值得注意的是:通常的代理服務器,只用于代理內部網絡對Internet的連接請求,客戶機必須指定代理服務器,并將本來要直接發送到Web服務器上的http請求發送到代理服務器中。由于外部網絡上的主機并不會配置并使用這個代理服務器,普通代理服務器也被設計為在Internet上搜尋多個不確定的服務器,而不是針對Internet上多個客戶機的請求訪問某一個固定的服務器,因此普通的Web代理服務器不支持外部對內部網絡的訪問請求。
當一個代理服務器能夠代理外部網絡上的主機,訪問內部網絡時,這種代理服務的方式稱為反向代理服務。此時代理服務器對外就表現為一個Web服務器,外部網絡就可以簡單把它當作一個標準的Web服務器而不需要特定的配置。不同之處在于,這個服務器沒有保存任何網頁的真實數據,所有的靜態網頁或者CGI程序,都保存在內部的Web服務器上。因此對反向代理服務器的攻擊并不會使得網頁信息遭到破壞,這樣就增強了Web服務器的安全性。
反向代理方式和包過濾方式或普通代理方式并無沖突,因此可以在防火墻設備中同時使用這兩種方式,其中反向代理用于外部網絡訪問內部網絡時使用,正向代理或包過濾方式用于拒絕其他外部訪問方式并提供內部網絡對外部網絡的訪問能力。因此可以結合這些方式提供最佳的安全訪問方式。
目前有許多反向代理軟件,比較有名的有 Nginx 和 Squid 。其他還包括Socks、Apache、Jigsaw、Delegate等。
使用Squid配置反向代理服務器
Squid作為反向代理服務器使用時,其工作原理為:客戶端請求訪問 Web 服務時,DNS 將訪問的域名解析為 Squid 反向代理服務器的 IP 地址,這樣客戶端的 URL 請求將被發送到反向代理服務器。如果 Squid 反向代理服務器中緩存了該請求的資源,則將該請求的資源直接返回給客戶端,否則反向代理服務器將向后臺的 Web 服務器請求資源,然后將請求的應答返回給客戶端,同時也將該應答緩存在本地,供下一個請求者使用。
Squid反向代理一般只緩存可緩沖的數據(比如 HTML網頁和圖片等),而一些 CGI 腳本程序或者 ASP、JSP 之類的動態程序默認不緩存。它根據從 Web 服務器返回的 HTTP 頭標記來緩沖靜態頁面。有四個最重要HTTP頭標記:
Last-Modified:告訴反向代理頁面什么時間被修改
Expires:告訴反向代理頁面什么時間應該從緩沖區中刪除
Cache-Control:告訴反向代理頁面是否應該被緩沖
Pragma:用來包含實現特定的指令,最常用的是Pragma:no-cache
要配置反向代理服務器,需要在squid的主配置文件里面添加如下內容:
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所服務的端口為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:告訴反向代理服務器,當客戶端有對www.test.com的訪問請求時,需要從真實Web Server 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:代理服務器的常規配置。