天天看點

Squid搭建反向代理提高網站通路速度

反向代理簡述:

反向代理伺服器有兩種傳輸模式:

1.同步模式:(如:squid)使用者發起請求,請求立即被轉到後端的伺服器,于是在浏覽器和後端伺服器之間就建立了一個連接配接,在請求完成前這個連接配接是一直存在的。

2.異步模式:(如:nginx)使用者發起的請求會發送到nginx,nginx接收到所有的資料後在轉發到後端的伺服器,後端伺服器處理完成後把資料傳回給nginx,nginx在傳回給使用者。

由此可見如果使用者發起的請求的資料比較大,或者使用者端的網速比較慢,同步模式時後端伺服器的連接配接數相對于異步模式會比較多,壓力也比較大。

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

squid 反向代理一般隻緩存可緩沖的資料(比如 html 網頁和圖檔等),而一些 cgi 腳本程式或者 asp、jsp 之類的動态程式預設不緩存。它根據從 web 伺服器傳回的 http 頭标記來緩沖靜态頁面。

工作拓撲:

Squid搭建反向代理提高網站通路速度

配置環境:

兩台系統均為:centos6.3

squid 192.168.0.202

web 192.168.0.203

dns :host代替(squid.test.com 192.168.0.202)

一、安裝squid

下載下傳:http://www.squid-cache.org/versions/v3/3.3/

1

2

3

4

5

6

7

<code>yum </code><code>install</code> <code>-y gcc gcc-c++ </code><code>make</code> <code>perl perl-devel  </code><code>#安裝依賴包</code>

<code>tar</code> <code>zxvf squid-3.3.0.3.</code><code>tar</code><code>.gz</code>

<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/squid</code>

<code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code>

<code>groupadd squid</code>

<code>useradd</code> <code>-g squid -s </code><code>/sbin/nologin</code> <code>squid</code>

<code>chown</code> <code>-r squid </code><code>/usr/local/squid/var/logs/</code> <code>/usr/local/squid/var/cache/</code>

二、配置squid反向代理

清除預設配置,添加自定義的配置:

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>vi</code> <code>/usr/local/squid/etc/squid</code><code>.conf</code>

<code>cache_effective_user squid</code>

<code>cache_effective_group squid</code>

<code>visible_hostname squid.</code><code>test</code><code>.com </code><code>#設定主機名</code>

<code>http_port 80 accel vhost vport </code><code>#配置squid加速模式</code>

<code>icp_port 3130</code>

<code>#cache_peer squid2.test.com sibling 80 3130 #此項為配置多個squid時配置,配置 squid2 為其鄰居,當 squid1 在其緩存中沒有找到請求的資源時,通過 icp 查詢去其鄰居中取得緩存</code>

<code>cache_peer 192.168.0.203 parent 80 0 no-query originserver round-robin name=web1</code>

<code>cache_peer 192.168.0.204 parent 80 0 no-query originserver round-robin name=web2</code>

<code>#squid1 的兩個父節點,originserver 參數指明是源伺服器, round-robin 參數指明 squid 通過輪詢方式将請求分發到其中一台父節點; squid 同時會對這些父節點的健康狀态進行檢查,如果父節點 down 了,那麼 squid 會從剩餘的 origin 伺服器中抓取資料,round-robin表示使用通過 rr 輪詢方式轉發到兩個父節點中的一個</code>

<code>cache_peer_domain web1 web2 squid.</code><code>test</code><code>.com </code><code>#允許web1、web2、squid.test.com請求</code>

<code>acl localnet src 192.168.0.202 </code><code>#指定ip通路</code>

<code>http_access allow all  </code><code>#允許所有人使用該代理.因為這裡是代理加速web伺服器</code>

<code>icp_access allow localnet  </code><code>#允許從鄰居伺服器緩沖内發送和接收icp請求</code>

<code>cache_log </code><code>/usr/local/squid/var/logs/cache</code><code>.log</code>

<code>access_log </code><code>/usr/local/squid/var/logs/access</code><code>.log squid</code>

<code>cache_dir ufs </code><code>/usr/local/squid/var/cache/</code> <code>1000 16 256 </code><code>#高速緩存目錄 ufs 類型使用的緩沖值最大允許1000mb空間,32個一級目錄,256個二級目錄</code>

<code>maximum_object_size 10240 kb </code><code>#能緩存的最大對象為 10m</code>

<code>maximum_object_size_in_memory 512 kb </code><code>#記憶體中緩存的最大對象 512k</code>

<code>cache_mem 256 mb  </code><code>#squid 用于緩存的記憶體量</code>

三、維護指令

<code>/usr/local/squid/sbin/squid</code> <code>-s   </code><code>#啟動squid</code>

<code>/usr/local/squid/sbin/squid</code> <code>–k parse </code><code>#檢查squid配置檔案是否正确</code>

<code>/usr/local/squid/sbin/squid</code> <code>–n -z  </code><code>#生成緩存目錄</code>

<code>/usr/local/squid/sbin/squid</code> <code>-k shudown或</code><code>/usr/local/squid/sbin/squid</code> <code>-k </code><code>kill</code> <code>#關閉squid</code>

<code>echo</code> <code>"/usr/local/squid/sbin/squid -s "</code> <code>&gt;&gt;</code><code>/etc/rc</code><code>.</code><code>local</code>  <code>#設定開機啟動</code>

測試:

通路192.168.0.202即可通路到web的頁面!

配置多台squid時,配置内容隻修改visible_hostname。

繼續閱讀