天天看點

利用 squid 反向代理提高網站性能原理總結

本文在介紹 squid 反向代理的工作原理的基礎上,指出反向代理技術在提高網站通路速度,增強網站可用性、安全性方面有很好的用途。作者在具體的實驗環境下,利用 DNS 輪詢和 Squid 反向代理技術,實作了網站的負載均衡,進而提高了網站的可用性和可靠性。

現在有許多大型的門戶網站如 SINA 都采用 squid 反向代理技術來加速網站的通路速度,可将不同的 URL 請求分發到背景不同的 WEB 伺服器上,同時網際網路使用者隻能看到反向代理伺服器的位址,加強了網站的通路安全。

反向代理伺服器又稱為 WEB 加速伺服器,它位于 WEB 伺服器的前端,充當 WEB 服

務器的内容緩存器。其系統結構如圖 1

反向代理伺服器是針對 WEB 伺服器設定的,背景 WEB 伺服器對網際網路使用者是透明的,使用者隻能看到反向代理伺服器的位址,不清楚背景 WEB 伺服器是如何組織架構的。當網際網路使用者請求 WEB 服務時,DNS 将請求的域名解析為反向代理伺服器的 IP 位址,這樣 URL 請求将被發送到反向代理伺服器,由反向代理伺服器負責處理使用者的請求與應答、與背景 WEB 伺服器互動。利用反向代理伺服器減輕了背景 WEB 伺服器的負載,提高了通路速度,同時避免了因使用者直接與 WEB 伺服器通信帶來的安全隐患。

回頁首

目前有許多反向代理軟體,比較有名的有 Nginx 和 Squid 。 Nginx 是由 Igor Sysoev 為俄羅斯通路量第二的 Rambler.ru 站點開發的,是一個高性能的 HTTP 和反向代理伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。

<code>Squid</code><code>是由美國政府大力資助的一項研究計劃,其目的為解決網絡帶寬不足的問題,支援<code>HTTP</code>,HTTPS,FTP 等多種協定,是現在 Unix 系統上使用、最多功能也最完整的一套軟體。下面将重點介紹 Squid 反向代理的實作原理和在提高網站性能方面的應用。</code>

<code><code>Squid</code>反向代理伺服器位于本地 WEB 伺服器和 Internet 之間 , 組織架構如圖 2:</code>

<code></code>

<code>用戶端請求通路 WEB 服務時,DNS 将通路的域名解析為 Squid 反向代理伺服器的 IP 位址,這樣用戶端的 URL 請求将被發送到反向代理伺服器。如果 Squid 反向代理伺服器中緩存了該請求的資源,則将該請求的資源直接傳回給用戶端,否則反向代理伺服器将向背景的 WEB 伺服器請求資源,然後将請求的應答傳回給用戶端,同時也将該應答緩存在本地,供下一個請求者使用。</code>

<code>Squid 反向代理一般隻緩存可緩沖的資料(比如 html 網頁和圖檔等),而一些 CGI 腳本程式或者 ASP、JSP 之類的動态程式預設不緩存。它根據從 WEB 伺服器傳回的 HTTP 頭标記來緩沖靜态頁面。有四個最重要 HTTP 頭标記:</code>

<code></code><code></code>

<code>Last-Modified: 告訴反向代理頁面什麼時間被修改</code>

<code>Expires: 告訴反向代理頁面什麼時間應該從緩沖區中删除</code>

<code>Cache-Control: 告訴反向代理頁面是否應該被緩沖</code>

<code>Pragma: 用來包含實作特定的指令,最常用的是 Pragma:no-c<code>ache</code></code>