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实验