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_pass http://10.9.8.129;

Squid设置源站:cache_peer 10.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_name localhost www.cdntest.com;

    root "E:\\Nginx";

    index index.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_port 10.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 {

    listen 80;

    server_name www.cdntest.com;

    location / {

        proxy_pass http://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缓存

curl http://www.cdntest.com/test.jpg -I

TXT文件 需要执行两次,第一次为访问源站,第二次为访问缓存

curl http://www.cdntest.com/test.txt -I

③其他测试方法

为确保缓存txt文件成功,而jpg图片不被缓存,将源站服务关掉,再次访问txt和jpg,得到以下结果:访问jpg文件服务器返回503;访问txt文件返回200

到此,已经完成了基于nginx+squid实现缓存功能的小型CDN实验