天天看點

用squid架設cdn簡單思路

先來了解下通路通過cdn緩存後的網站過程:

用戶端通過域名通路網站——>cdn服務商将web網站域名的A記錄改為cname并指向到放在各地的cdn緩存伺服器上——>我們得到域名的cname後,由于cname指向的是cdn緩存伺服器,是以我們通路到cdn緩存伺服器——>dns根據不同的源ip位址段解析對應的ip,并将其根據地域通路就近的cdn緩存伺服器——>由于我們在web程式中指定了通路的cdn緩存伺服器的url,是以cache直接比對使用者請求,到源站點伺服器獲得内容并緩存供下次使用

至此是一個完整的通路過程,當然通路cdn緩存伺服器還涉及到負載均衡等技術,需要我們詳細研究。

在此我來模拟下環境:

電信:172.16.8.102 源站點伺服器 squid 80端口+Apache 81端口

網通:172.16.8.147 cdn緩存伺服器 squid 80端口

電信:172.16.4.42 本地用戶端

問題:由于本地用戶端是電信使用者,直接通過電信線路通路正常,但是網通使用者打開網頁很慢

思路:我們在網通線路租用伺服器作為cdn緩存伺服器,這樣網通使用者經dns會通路通過網通線路通路cdn緩存伺服器,提高了通路速度

1.配置電信伺服器(在此隻羅列關鍵配置,詳細配置前看博文squid+apache配置)

http_port 80 accel vhost vport

cache_peer 127.0.0.1 parent 81 0 no-query originserver name=test

cache_peer test www.test.com

cache_peer_access test allow all

squid做反向代理,代理apache的81端口,并允許所有人通路

2.配置網通伺服器

http_port 80 accel vhost vport

cache_peer 172.16.8.102 parent 81 0 no-query originserver name=test

cache_peer test www.test.com

cache_peer_access test allow all

squid做反向代理,代理172.16.8.102的81端口

通過以上兩步,我們即可通過這兩條線路通路到源伺服器的81端口,進而通路到所需内容。

3.域名解析

我們将www.test.com解析到電信線路的172.16.8.102 和網通線路172.16.8.147,這樣就能實作cdn的效果。

當然,cdn的負載均衡和緩存技術以及如何控制使用者就近通路,仍需我們深入去探讨,不是靠三兩句能說明白的。