CDN缓存
服务商:
网宿
蓝汛
阿里云
腾讯云
作用:
用来缓存和加速静态文件的读取
减轻后端db层的访问压力
特点:
全国节点
功能:
1.可以按照域名缓存
2.可以按照文件后缀缓存
3.可以提前缓存预热
@记录 直接访问baidu.com
A记录 域名指向一个IP地址 www.oldzhang.com VIP
CNAME记录 www.oldzhang.com cdn.www.oldzhang.com
CDN服务: 回源IP
www.oldzhang.com
VIP(10.0.0.10)
CDN
内容分发网络(Content Delivery Network
),通过将服务内容分发至全网加速节点,利用全球调度系
统使用户能够就近获取,有效降低访问延迟,提升服务可用性。
CDN
第一降低机房的使用带宽,因为很多资源通过 CDN 就直接返回用户了;
第二解决不同运营商之间的互联,因为可以让联通的网络访问联通让电信的网络访问电信,起到加速用户访问的目的;
第三:解决用户访问的地域问题,就近返回用户资源。
百度CDN https://cloud.baidu. com/product/cdn.html
阿里CDN
提前对静态内容进行预缓存,避免大量的请求回源,导致主站网络带宽被打满而导致数据无法更新,
另外 CDN 可以将数据根据访问的热度不同而进行不同 级别的缓存,例如访问量最高的资源访问 CDN
边缘节点的内存,其次的放在 SSD 或者 SATA ,再其次的放在云存储,这样兼顾了速度与成本
① 用户发出请求:本地DNS服务器通过解析得到ICP2 DNS授权服务器的地址
② 本地DNS服务器访问ICP2 DNS授权服务器,获知域名的详细解析由SSR授权服务器负责
③ 本地DNS服务器访问SSR授权服务器,得到离用户最近的节点服务器的地址,会送给用户;
④ 用户访问ChinaCache节点服务器,节点服务器从源站取得用户所需内容并将内容发给用户。
源站设置
源站设置主要是对资源文件的源站地址进行管理以及配合源站实际资源情况进行一些更高级的设置,包括主备线路、端口号、轮询权重等。其中,源站地址配置支持 IP 和域名的形式,例如:
IP:1.1.1.1 域名:a.test.com 针对源站地址为域名源站的情况,CDN 节点会进行一次 DNS 解析,解析到的 IP 即为真实的源站地址。
upstream test {
server 1.1.1.1:80;
server 1.1.1.2:80;
server 1.1.1.3:80;
}
回源host
CDN 节点回源时会在 HTTP 请求头 HOST 字段里替换该域名,一般是域名形式的字符串,例如:ccc.test.com。 回源 HOST 为可选配置项,默认为空,即遵循访问域名; 源站地址和回源 HOST 的区别:源站地址是 CDN 节点回源时能够找到对应的源站服务器,源站可能有多个 WEB 站点,回源 HOST 则指明了资源所在的站点。 示例:
location / {
# 回源Host,默认使用访问域名去回源
# proxy_set_header Host $host:$server_port;
# 自定义回源host
proxy_set_header Host ccc.test.com:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://test;
}
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
以及使用yum安装zlib库
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2、安装软件的方式
进入/usr/src目录
cd /usr/src
wget url 命令去下载或者通过xshell的拖拉方式
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -xvf nginx-1.16.1.tar.gz
cd nginx-1.16.1
./configure
yum -y list java*
yum -y list java* |less
yum -y install java-1.8.0-openjdk.x86_64
1、安装依赖库
yum install readline-devel pcre-devel openssl-devel perl -y
2、下载openresty
wget https://openresty.org/download/openresty-1.15.8.3.tar.gz
3、解压并进入目录
tar -zxvf openresty-1.15.8.3.tar.gz
cd openresty-1.15.8.3
4、创建安装目录并配置
./configure --prefix=/usr/local/openresty --with-luajit --without-http_redis2_module --with-http_iconv_module
1、本地站点ETag缓存
示范开启静态文件缓存
环境:
nginx -v
nginx version: openresty/1.15.8.3
(该版本Nginx原生有ETag,默认启用了,如果没有需要对ETag模块进行添加,添加后使用etag on;命令开启)
server {
listen 80;
server_name localhost;
#....其他配置删除了
location / {
root html;
index index.html index.htm;
}
location ~ .*\.(js|css|gif|jpg|jpeg|png|bmp|swf|flv|html|htm)$ {
expires 1d;#缓存一天过期
}
}
第一次请求时花费37ms
内容未变的情况下后续访问请求响应的状态码会是304(无更改)花费19ms
2、对反向代理开启缓存
#-----------------nginx cache configure start
proxy_cache_path /ngx_cache levels=1:2 表示缓存目录的第一级目录是1个字符,第二级目录是2个字符
keys_zone=my_cache:10m max_size=1g inactive=30d use_temp_path=on;
proxy_temp_path /ngx_cache/temp;#临时目录
proxy_cache_key $host$request_uri;#缓存的KEY
#-----------------nginx cache configure end
2.2定义一个反代所需upstream和server
upstream fpa.cn {
server 127.0.0.1:81;
}
server {
listen 81;
root html;
}
server {
listen 80;
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://fpa.cn;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2.4对反代的请求中的静态文件使用缓存
server {
listen 80;
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://fpa.cn;
}
location ~ .*\.(js|css|gif|jpg|jpeg|png|bmp|swf|flv|html|htm)$ {
#proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;#对error等允许使用过期缓存进行返回
proxy_cache my_cache;#指定使用my_cache这个缓存配置
proxy_cache_key $host$uri$is_args$args;#设置缓存的key(在缓存的文件里开头有KEY:值)
proxy_cache_valid 1d;#缓存有效期1天
#proxy_ignore_headers Cache-Control;#开启后忽略不允许缓存
add_header X-Cache $upstream_cache_status;#将缓存是否命中的结果返回
add_header X-Via $server_addr;#将缓存服务器IP返回
proxy_pass http://fpa.cn;#反代
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
效果图: