2-12-配置squid代理服務器加快網站訪問速度

 

本節所講內容: html

squid服務器常見概念 linux

squid服務器安裝及相關配置文件 web

實戰:配置squid正向代理服務器 vim

實戰:配置透明squid代理提高訪問速度 windows

實戰:配置squid反向代理加速度內網web服務器訪問速度 瀏覽器

squid服務概述: 緩存

全稱: squid cache,是一個流行的自由軟件(GNU通用公共許可證). 安全

主要有連個功能:  代理服務器 和 爲web服務器提供緩存 服務器

應用普遍: 網絡

1. 共享網絡資源,緩存萬維網;

2.爲web服務器前置緩存提升web服務器的訪問速度;

3. 域名和其餘網絡搜索;

4. 過濾流量,幫助網絡安全;

5. 局域網代理上網

主要平臺在 Unix類系統

官網:http://www.squid-cache.org

squid:烏賊 的意思

wps4662.tmp

加速原理:

wps4663.tmp

模式: C/S 模式

安裝squid服務:

yum -y install squid

rpm -ivh /mnt/Packages/squid-*.rpm

端口:3128

vim /etc/services

netstat -antup | grep 3128

配置文件:

/etc/squid/squid.conf

啓動服務

/etc/init.d/squid start

service squid start

開機啓動:

chkconfig squid on

chkconfig --list squid

實戰舉例

實驗環境:

  Server ---> xiaogan64  IP:eth0 192.168.31.64

                              eth1:192.168.64.1

  Client1 ---> xp         IP:eth0 192.168.64.123

  Client2 ---> xiaogan63 IP:eth0 192.168.64.63

例1:配置squid正向代理服務器

wps4664.tmp

需求分析

搭建squid服務器,是內網機器,能夠經過squid服務器加速上網

Action:

1. Server端,安裝squid服務

yum -y install squid

2. 配置squid實現正向代理

cp /etc/squid/squid.conf /etc/squid/squid.conf.bak #先備份!

vim /etc/squid/squid.conf

修改 http_access deny all

http_access allow all #即去掉註釋,容許全部主機經過

3. 啓動服務

/etc/init.d/squid start

4. 服務器使用兩塊網卡,

外網---> eth0 IP:192.168.31.64 (橋接模式)

內網---> eth1 IP:192.168.64.1 (VMnet6模式)

添加第二塊網卡後,運行以下命令便可:

ifconfig eth1 192.168.64.1/24 #不要設置網關!!!

5. 客戶端xp系統,安裝瀏覽器,

並設置IP地址:192.168.64.123/24 網關:192.168.64.1(服務器IP)

注意:沒必要設置DNS,由於服務器已經幫助咱們把域名解析了!!!

打開瀏覽器,並設置代理,步驟以下!

工具 ---> Internet選項 ---> 鏈接 ---> 局域網設置

---> 設置代理服務器 192.168.64.1 端口3128 Ok,嘗試瀏覽網頁!

wps4665.tmp

當咱們在xp系統中,運行cmd,ping www.qq.com 時,發現ping不通,可是瀏覽器能夠訪問網站?!

總結:代理的過程:你的需求給代理,代理替你訪問,而後返回給你。

互動:客戶端須要不配置 DNS?

不須要,由於客戶端把連接http://www.qq.com 發給代理後,代理會替你解析完域名,並把收到的數再轉給客戶端瀏覽器。

例2:配置squid,搭建透明代理服務器

透明代理= squid + iptables

分析: 因爲在例1中,經過瀏覽器,將需求的信息,經過squid服務器的3128端口導向了80端口,因此咱們能夠配置squid讓其默認實現端口轉發.(即在服務端只需設置好IP便可,不用設置IE代理)

即:客戶端不用在瀏覽器裏指定代理服務器的ip地址和端口號,就能夠直接訪問公網上的網站服務器。

Action:

1. 直接修改配置文件/etc/squid/squid.conf

vim /etc/squid/squid.conf

修改 http_access deny all 爲

http_access allow all

修改 http_port 3128

http_port 3128 transparent

2. 重啓或重載squid

/etc/init.d/squid reload

/etc/init.d/squid restart

3. 啓動iptables,並配置iptables規則

配置前,設置默認接收,並清空規則

iptables -P INPUT ACCEPT

iptables -F

配置iptables以下:

開啓路由轉發: echo 1 >> /proc/sys/run/ipv4/ip_forward

vim /etc/sysctl.conf

修改 net.ipv4.ip_forward 值 =1

sysctl -p #是修改生效

配置規則:

iptables -t nat -A POSTROUTING -s 192.168.64.0/24 -j SNAT --to 192.168.31.64

# SNAT代理內部上網,將內部的地址所有轉化爲能夠上網的地址 192.168.31.64

iptables -t nat -A PREROUTING -s 192.168.64.0/24 -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

# 端口轉化,來自192.168.64.0,從eth1且端口爲80的數據進行數據重定向到3128,代理服務器爲你工做

4. 客戶端去掉代理設置,嘗試瀏覽網頁

例3:配置squid反向代理加速度內網web服務器訪問速度

國內主要反向代理 CDN   廠商:網宿 , 藍汛    百度,騰訊,阿里雲等等都有CDN服務。

反向代理服務器: 要求內存夠大,硬盤要夠快不須要太大。

拓撲圖:

wps4666.tmp

讓外網中 win10主機 訪問192.168.31.64代理服務器.

代理服務器緩存192.168.64.63 web服務器中的數據.

實現xiaogan64給xiaogan63加速 80和81端口

只加速度靜態頁面或 視頻。

Actions:

1. 公網客戶端,物理機:

win10 IP: 192.168.31.248

修改物理機hosts文件:

windows  hosts文件在:    C:\Windows\System32\drivers\etc

首先,在 Client 端修改 hosts 文件,添加以下兩行:

192.168.31.64 www.xiaogan-a.org

192.168.31.64 www.xiaogan-b.org

注:添加這兩行 ,目的是爲了讓客戶端可以解析這兩個域名

(www.xiaogan-a.comwww.xiaogan-b.com)

其對應 IP 爲 192.168.31.64 ( squid 反向代理服務器的 IP)

2. 配置xiaogan64 squid代理服務器:

這裏,Squid 反向代理服務器監聽端口:80 (默認是:3128)便於瀏覽器瀏覽

訪問時,須要在客戶端,打開瀏覽器,在瀏覽器地址欄輸入:

www.xiaogan-a.com:80  ---> 瀏覽器默認端口80,因此能夠不寫:80

配置squid代理服務器xiaogan64:

# 配置Squid 服務器監聽本機 80 端口,開啓vhost 支持虛擬主機功能,這樣也能夠給多臺服務器加速。

vim /etc/squid/squid.conf

改:#http_access denny all

爲: http_access allow all

改:http_port  3128

爲:http_port 80 vhost

##打開虛擬主機支持 ,在此行下面,添加以紅色內容:

cache_peer 192.168.64.63 parent 80 0 no-query originserver weight=1 name=a

cache_peer 192.168.64.63 parent 81 0 no-query originserver weight=1 name=b

cache_peer_domain a www.xiaogan-a.com

cache_peer_domain b www.xiaogan-b.com

# 以上4行配置,讓 Squid 服務器知道:

# 從客戶端過來的請求,若是是 www.xiaogan-a.com,則 Squid 向 192.168.64.63的端口 80發送請求;

# 從客戶端過來的請求,若是是 www.xiaogan-b.com,則 Squid 向 192.168.64.63 的端口 81 發送請求;

cache_peer_access a allow all

cache_peer_access b allow all

# cache_peer_access 設置:容許其它 cache 機和訪問a和b

重啓服務:

service squid reload

說明:

1) cache_peer 設置與其它 cache 機的通信,也處理加速方式的核心設置

cache_peer hostname type http-port  icp-port [options]

no-query 不發送 icp 信息包到此機器,通常設置原始主機用(若是是 cache 機,則須要互相發送 icp 包驗證存在性)

originserver 指定此機爲原始內容服務器,用於加速模式

type: either 'parent'(父親), 'sibling'(兄弟), or 'multicast'(廣播——最好不用).原始服務器配成 parent

2) cache_peer_domain 限制/指定用戶訪問的鄰居 cache 域,相似

cache_peer_access,cache_peer_domain europe-cache.org parent .ch .dk .fr 以

fr/dk/ch 結尾的域名訪問 europe 緩存

3) cache_peer_access cache-host allow|deny [!]aclname 相似 acl,對 cache 機器進行訪問控制,通常不用。例子:cache_peer_access 192.168.0.249 allow HTTP

其它配置參數說明: 如下

#cache_dir ufs /var/spool/squid 100 16 256 

# 指定 Squid 服務器存放數據的目錄

配置兩個站點xiaogan63 配置HTTP虛擬主機:

基於端口作虛擬主機:

mkdir /var/www/html/xiaogana

mkdir /var/www/html/xiaoganb

echo www.xiaogan-a.org > /var/www/html/xiaogana/index.html

echo www.xiaogan-b.org > /var/www/html/xiaoganb/index.html

vim /etc/httpd/conf/httpd.conf

在Listen 80 行後添加以下行:

Listen 81

NameVirtualHost *:80

<VirtualHost *:80>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html/xiaogana

    ServerName www.xiaogan-a.org

    ErrorLog logs/dummy-host.example.com-error_log

    CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

<VirtualHost *:81>

    ServerAdmin webmaster@dummy-host.example.com

    DocumentRoot /var/www/html/xiaoganb

    ServerName www.xiaogan-b.com

    ErrorLog logs/dummy-host.example.com-error_log

    CustomLog logs/dummy-host.example.com-access_log common

</VirtualHost>

重啓httpd服務

service httpd restart

測試:

www.xiaogan-a.org

www.xiaogan-b.org

另外,也能夠把squid代理設置爲80端口,這樣客戶端,在訪問數據時,就能夠直接訪問了。不須要輸入端口號了。

在上面實驗的基礎上,修改如下內容:

[root@xiaogan63 ~]# vim /etc/squid/squid.conf

改:http_port 8000 vhost

爲:http_port 80 vhost  ##打開虛擬主機支持 ,在此行下面,添加以紅色內容:

重啓squid服務器:

[root@xiaogan63 ~]#service squid restart

測試:

在瀏覽器中訪問:www.servera.com 和www.serverb.com 能夠正常訪問。

http://blog.csdn.net/kumu_linux/article/details/7892984

//注:cache_men不能超過cache_dir中的一個數值,不然會出現以下報錯,

中止 squid:2012/08/21 16:05:46| WARNING cache_mem is larger than totaldisk cache space!

http://zhumeng8337797.blog.163.com/blog/static/1007689142011111112431140/

CDN簡介及選擇技巧:

CDN服務

CDN的全稱Content Delivery Network,(縮寫:CDN)即內容分發網絡。CDN目的是經過在現有的Internet中增長一層新的網絡架構,將網站的內容發佈到最接近用戶的網絡「邊緣」,使用戶能夠就近取得所需的內容,解決 Internet 網絡擁塞情況,提升用戶訪問網站的響應速度。

CDN的組成部分

CDN是一種組合技術,其中包括源站、緩存服務器、智能DNS、客戶端等幾個重要部分。

源站:源站指發佈內容的原始站點。添加、刪除和更改網站的文件,都是在源站上進行的;另外緩存服務器所抓取的對象也所有來自於源站。

緩存服務器:

緩存服務器是直接提供給用戶訪問的站點資源,有一臺或數臺服務器組成;當用戶發起訪問時,他的訪問請求被智能DNS定位到離他較近的緩存服務器。若是用戶所請求的內容恰好在緩存裏面,則直接把內容返還給用戶;若是訪問所需的內容沒有被緩存,則緩存服務器向鄰近的緩存服務器或直接向源站抓取內容,而後再返還給用戶。

智能DNS:

智能DNS是整個CDN技術的核心,它主要根據用戶的來源,將其訪問請求指向離用戶比較近的緩存服務器,如把廣州電信的用戶請求指向到廣州電信IDC機房中的緩存服務器。經過智能DNS解析,讓用戶訪問同服務商下的服務器,消除國內南北網絡互相訪問慢的問題,達到加速做用。智能DNS的出現,顛覆了傳統的一個域名對應一個鏡像的作法,讓用戶更加便捷的去訪問網站。

客戶端:

客戶端或稱用戶端即發起訪問的普通用戶,通常的訪問方式是瀏覽器。這裏就再也不作詳細說明。

工做原理

傳統的解析過程:

瞭解CDN工做原理以前,咱們先看看傳統的網站訪問流程,傳統的訪問流程沒有CDN,那麼整個解析:

傳統的網站訪問過程爲:

1. 用戶在瀏覽器中輸入要訪問的域名;

2. 瀏覽器向域名解析服務器發出解析請求,得到此域名對應的IP地址;

3. 瀏覽器利用所獲得的IP地址,向該IP對應的服務器發出訪問請求;

4. 服務器對此響應,將數據回傳至用戶瀏覽器端顯示出來。

CDN的解析過程:

wps4667.tmp

1. 用戶在瀏覽器中輸入要訪問的域名;

2. 瀏覽器向域名解析服務器發出解析請求,因爲CDN對域名解析過程進行了調整,因此用戶端通常獲得的是該域名對應的CNAME記錄,此時瀏覽器須要再次對得到的CNAME域名進行解析才能獲得緩存服務器實際的IP地址。

注:在此過程當中,全局負載均衡DNS解析服務器會根據用戶端的源IP地址,如地理位置(深圳仍是上海)、接入網類型(電信仍是網通)將用戶的訪問請求定位到離用戶路由最短、位置最近、負載最輕的Cache節點(緩存服務器)上,實現就近定位。定位優先原則可按位置、可按路由、也可按負載等[智能DNS]。

3. 再次解析後瀏覽器獲得該域名CDN緩存服務器的實際IP地址,向緩存服務器發出訪問請求;

4. 緩存服務器根據瀏覽器提供的域名,經過Cache內部專用DNS解析獲得此域名源服務器的真實IP地址,再由緩存服務器向此真實IP地址提交訪問請求;

5. 緩存服務器從真實IP地址獲得內容後,一方面在本地進行保存,以備之後使用,同時把獲得的數據發送到客戶端瀏覽器,完成訪問的響應過程;

6. 用戶端獲得由緩存服務器傳回的數據後顯示出來,至此完成整個域名訪問過程。

經過以上分析能夠看到,不管是否使用CDN網絡,普通用戶客戶端設置不需作任何改變,直接使用被加速網站原有域名訪問便可。對於要加速的網站,只需修改整個訪問過程當中的域名解析部分,便能實現透明的網絡加速服務。

傳統更直觀的圖解:

wps4668.tmp

用戶在本身的瀏覽器中輸入要訪問的網站的域名

瀏覽器向本地DNS請求對該域名的解析

本地DNS將請求發到網站受權的DNS服務器

受權DNS將服務器的IP地址做爲解析結果送給本地DNS

本地DNS將解析結果返還給用戶,同時將該解析結果保存在本身的緩存中,直到相應的TTL(生存週期)過時,纔再向網站的受權DNS請求解析

用戶在獲得IP地址後,向該地址所指向的網站的服務器進行訪問;

CDN更直觀圖解:

wps4679.tmp

用戶向瀏覽器提供要訪問網站的域名,域名解析的請求被髮往網站的DNS域名解析服務器;

因爲網站的DNS域名解析服務器對此域名的解析設置了CNAME,請求被指向CDN網絡中的智能DNS負載均衡系統;

智能DNS負載均衡系統對域名進行智能解析,將響應速度最快的節點IP返回給用戶;

瀏覽器在獲得速度最快節點的IP地址之後,向CDN節點發出訪問請求;

因爲是第一次訪問,CDN節點將回到源站取用戶請求的數據併發給用戶;

當有其餘用戶再次訪問一樣內容時,CDN將直接將數據返回給客戶,完成請求/服務過程。

精簡原理

wps467A.tmp

解決服務器端的「第一千米」問題

緩解甚至消除了不一樣運營商之間互聯的瓶頸形成的影響

減輕了各省的出口帶寬壓力

緩解了骨幹網的壓力

優化了網上熱點內容的分佈

CDN對網絡的優化做用原理圖以下:

wps467B.tmp

國內外CDN加速有何區別、如何選擇CDN?

CDN的前2名是藍訊和網宿,這個業內異議不大。下面規模較大的有帝聯、快網等還有一些新起之秀,好比騰訊雲CND,阿里雲CND等等,固然小的CDN不可勝數。CDN的加速效果更多的依賴於其普遍的節點部署,因此選擇一個相對較大的CDN更靠譜。價格方面,流量較小時確實沒什麼議價空間

因爲國內外網絡環境的差別,CDN(內容分發網絡)的意義也有了不一樣。在國內,CDN最主要解決的問題是運營商之間的互聯互通問題,固然也確實解決了突發流量、大範圍覆蓋、網民訪問緩慢的問題。所以,國內對CDN需求最明顯的是大型互聯網公司,尤爲是視頻、遊戲、門戶、電商等。企業類相對就瞭解的不多了,只有個別外資企業可以理解CDN的真正意義,國內企業還須要好久的時間去理解。在國外,CDN的至關一部分客戶羣體是企業,各類與互聯網並不直接相關的企業。

CDN的好與壞,我的認爲有以下幾點:(不分前後)

1,基礎建設的投入,也就是節點的質量和數量;(所以小型CDN服務商天然在資金方面是劣勢)

2,技術研發投入,對新技術的敏感,對互聯網流量的敏感,對IP網絡底層技術的敏感;動態數據愈來愈多,如何針對動態技術進行加速,如何真正高效的動靜態分離,如何針對不一樣業務自動進行識別和區分,如何真正智能的調度流量,等等

3,對互聯網公司業務的深入理解,針對遊戲、視頻、門戶、電商等等互聯網公司,不一樣業務類型有哪些獨特的需求,服務和產品該如何實際解決問題,如何讓客戶真正感受到方便、實用、高效。

4,服務意識,如何不斷提高後臺系統的效率,如何給客戶一個真正方便簡潔的操做界面,如何能利用帶寬等數據統計出更有價值的信息給予反饋,如何讓CDN服務變得相對透明,而不是成爲運維部門的一種工做壓力。

5,數聽說話,積累了如此多的數據,有什麼樣的反饋,有什麼樣的彙總和概括,能提煉出哪些對客戶更有附加價值的東西,是否能發現如今系統的問題從而第一時間解決。

6,運營經驗,作運維的朋友們都知道,經驗很是重要。所以,一個CDN服務商的服務時間很關鍵,就像一句老話,吃的鹽比你走的路都多,能同樣麼? 固然,經驗不是單純時間的累計,應該是不斷總結、不斷改進的過程,漫長確意義非凡。

一些見解:

1,計費標準,因爲國內運營商的壟斷地位是不可置疑的,所以計費方式很大一部分是受運營商影響的。Akamai是按照流量計費,而國內不得不以帶寬計費方式爲主。

2,價格高低,若是單純的只是將運營商的帶寬轉售給互聯網公司,那CDN就變成了帶寬批發商,價格天然就只是價格,沒有其餘價值了。但若是能結合大量的數據,從技術上提高體驗,就有了更多的價值,價格天然會高。

3,避免惡性循環,當產品和服務的附加值太低時,惡性循環就開始了。買東西的只看低價,賣東西的只好不斷降價,買東西的發現質量愈來愈差,只好尋找更低的價格,賣東西的就只好不斷壓縮成本,下降投入...久而久之,後果可想而知。

我的認爲一些有價值的東西:

流量調度,提及來簡單,能作到Akamai那樣的全球調度,不容易;

動態數據,目前國內CDN服務商都沒有真正實用、好用的方案,須要持續的技術投入;

高度自動化,一套系統乃至一個公司的效率高低,直接影響結果;

態度,你是隻爲本身着想,仍是能真正站在客戶的角度考慮問題,很重要。

Akamai

Akamai於1998年發明CDN技術架構並誕生於麻省理工學院,1999年NASDAQ上市。總部位於美國波士頓。

Akamai是全球最大的CDN服務商,它巨大的網絡分發能力在峯值時可達到21Tbps。Akamai公司旨在消除Internet瓶頸和提升互聯網用戶訪問體驗,保護最終用戶訪問網站以及企業內部應用的速度,而且提供全面的雲安全服務,提供全球高清流媒體的加速。

目前,該公司爲在全球部署150000多臺服務器,這些服務器部署在全球90多個國家,800多個城市,1000多個運營商的2500多個節點上。

相關文章
相關標籤/搜索