本文在介紹 squid 反向代理的工作原理的基礎上,指出反向代理技術在提高網站訪問速度,增強網站可用性、安全性方面有很好的用途。作者在具體的實驗環境下,利用 DNS 輪詢和 Squid 反向代理技術,實現了網站的負載均衡,從而提高了網站的可用性和可靠性。
本文在介紹 squid 反向代理的工作原理的基礎上,指出反向代理技術在提高網站訪問速度,增強網站可用性、安全性方面有很好的用途。作者在具體的實驗環境下,利用 DNS 輪詢和 Squid 反向代理技術,實現了網站的負載均衡,從而提高了網站的可用性和可靠性。
現在有許多大型的門戶網站如 SINA 都採用 squid 反向代理技術來加速網站的訪問速度,可將不同的 URL 請求分發到後臺不同的 WEB 服務器上,同時互聯網用戶只能看到反向代理服務器的地址,加強了網站的訪問安全。
反向代理的概念
反向代理服務器又稱爲 WEB 加速服務器,它位於 WEB 服務器的前端,充當 WEB 服
務器的內容緩存器。其系統結構如圖 1
圖 1. 系統結構
反向代理服務器是針對 WEB 服務器設置的,後臺 WEB 服務器對互聯網用戶是透明的,用戶只能看到反向代理服務器的地址,不清楚後臺 WEB 服務器是如何組織架構的。當互聯網用戶請求 WEB 服務時,DNS 將請求的域名解析爲反向代理服務器的 IP 地址,這樣 URL 請求將被髮送到反向代理服務器,由反向代理服務器負責處理用戶的請求與應答、與後臺 WEB 服務器交互。利用反向代理服務器減輕了後臺 WEB 服務器的負載,提高了訪問速度,同時避免了因用戶直接與 WEB 服務器通信帶來的安全隱患。
Squid 反向代理的實現原理
目前有許多反向代理軟件,比較有名的有 Nginx 和 Squid 。 Nginx 是由 Igor Sysoev 爲俄羅斯訪問量第二的 Rambler.ru 站點開發的,是一個高性能的 HTTP 和反向代理服務器,也是一個 IMAP/POP3/SMTP 代理服務器。
Squid
是由美國政府大力資助的一項研究計劃,其目的爲解決網絡帶寬不足的問題,支持
HTTP
,HTTPS,FTP 等多種協議,是現在 Unix 系統上使用、最多功能也最完整的一套軟體。下面將重點介紹 Squid 反向代理的實現原理和在提高網站性能方面的應用。
Squid
反向代理服務器位於本地 WEB 服務器和 Internet 之間 , 組織架構如圖 2:
圖 2. 組織架構
客戶端請求訪問 WEB 服務時,DNS 將訪問的域名解析爲 Squid 反向代理服務器的 IP 地址,這樣客戶端的 URL 請求將被髮送到反向代理服務器。如果 Squid 反向代理服務器中緩存了該請求的資源,則將該請求的資源直接返回給客戶端,否則反向代理服務器將向後臺的 WEB 服務器請求資源,然後將請求的應答返回給客戶端,同時也將該應答緩存在本地,供下一個請求者使用。
Squid 反向代理一般只緩存可緩衝的數據(比如 html 網頁和圖片等),而一些 CGI 腳本程序或者 ASP、JSP 之類的動態程序默認不緩存。它根據從 WEB 服務器返回的 HTTP 頭標記來緩衝靜態頁面。有四個最重要 HTTP 頭標記:
Last-Modified: 告訴反向代理頁面什麼時間被修改
Expires: 告訴反向代理頁面什麼時間應該從緩衝區中刪除
Cache-Control: 告訴反向代理頁面是否應該被緩衝
Pragma: 用來包含實現特定的指令,最常用的是 Pragma:no-c
ache