CDN基礎實驗--基于nginx+squid實現緩存功能
實驗要求
1、搭建2個web服務,使用nginx實現。
1個做源站(然后域名為:www.cdntest.com),配置實現功能:提供可以訪問的web服務,另1個做反向代理,接收用戶的請求,配置實現功能是:代理到后端的squid。
2、搭建一個squid服務,配置實現如下功能:
1)txt緩存1個月,jpg文件不緩存
2)配置回源功能,源站為后端的web服務器(nginx)
3.軟件包及版本
nginx版本包:tengine-10.10.1-68.el6.x86_64.rpm或nginx-1.10.2-1.el6.x86_64
squid版本包:squid-3.8.3-2.p.x86_64.rpm
詳細架構如下:
實驗說明
1、squid軟件一般常用于代理中,也是最常見的緩存及代理軟件,它可以在Windows和Linux等系統運行
2、nginx在本實驗中用做http服務器和反向代理服務器,可以運行在Windows和Linux等系統運行
3、小提示:nginx、squid可以使用同一主機的不同端口實現本實驗。
4、實現域名訪問:①虛擬機環境下修改Windows全局hosts文件;②在Linux中搭建bind域名服務器。
本實驗以Windows的nginx作為源站,Linux的Squid作為緩存服務器、Linux的Nginx作為反向代理服務器,測試客戶為以上3臺的任意一臺。
準備環境:系統和軟件準備
系統:Windows10;Linux CentOS6.5 final;
軟件:nginx-1.10.2-1.el6.x86_64;squid-3.1.23-24.el6.x86_64
系統結構
源站IP:10.9.8.1
緩存代理squid IP:10.9.8.129
反向代理nginx IP:10.9.8.128
測試用戶為以上3臺主機的任意一臺
關鍵配置代碼
Nginx反向代理代碼:proxy_passhttp://10.9.8.129;
Squid設置源站:cache_peer10.9.8.1 parent 80 0 originserver
Squid緩存設置:refresh_pattern-i \.txt$ 43200 100% 43200
詳細安裝和配置
(1)源站配置(Windows)
下載nginx的Win包安裝到windows系統下,配置conf/nginx.conf如下:
```
server {
listen80;
server_namelocalhost www.cdntest.com;
root"E:\Nginx";
indexindex.html index.htm index.php;
#省略部分代碼
}
```
把txt/jpg文件放在E:\Nginx目錄下
(2)緩存服務器Squid的安裝及配置
安裝:yum install squid -y
配置/etc/squid/squid.conf如下:
http_access allow all
http_port 80 #端口一般使用常用端口
cache_dir ufs
/var/spool/squid 100 16 256 #緩存目錄
http_port10.9.8.129:80 accel vhost
cache_peer
10.9.8.1 parent 80 0 originserver #設置源站及端口
cache_mem 64 MB #緩存空間大小
acl allow_file
url_regex -i \.(txt) #允許緩存的文件
cache allowallow_file
refresh_pattern -i\.txt$ 43200100%43200 #設置緩存時間 單位為秒
(3)反向代理nginx的安裝及配置
安裝:yum install nginx -y
配置:/etc/nginx/conf.d/default.conf
```
server {
? ? listen80;
? ?server_namewww.cdntest.com;
? ?location / {
? ?proxy_passhttp://10.9.8.129; #反向代理地址
? }
}
```
配置完成后重啟nginx
(4)驗證實驗
①通過Windows的瀏覽器訪問
②使用10.9.8.128/10.9.8.129?curl訪問
HTML頁面curl http://www.cdntest.com/default.html
JPG圖片 需要執行多次,查看是否被squid緩存
curlhttp://www.cdntest.com/test.jpg -I
TXT文件 需要執行兩次,第一次為訪問源站,第二次為訪問緩存
curlhttp://www.cdntest.com/test.txt -I
③其他測試方法
為確保緩存txt文件成功,而jpg圖片不被緩存,將源站服務關掉,再次訪問txt和jpg,得到以下結果:訪問jpg文件服務器返回503;訪問txt文件返回200
到此,已經完成了基于nginx+squid實現緩存功能的小型CDN實驗