文章目录
Nginx缓存设置 设置缓存 取消不需要内容的缓存 查看nginx缓存数据
CDN
Nginx缓存设置
设置缓存
##在yum配置文件中添加nginx在线源
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
##yum安装nginx
yum -y install nginx
##修改配置文件,在192.168.242.69主机上作为nginx的缓存服务器
vim /etc/nginx/nginx.conf
##在http配置块配置
http {
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m
max_size=10g
inactive=60m
use_temp_path=off;
##配置写法
upstream cache_server{
server 192.168.242.68:80;
server 192.168.242.69:80;
}
##nginx可以在缓存服务器的基础上做动静分离
##配置动态服务器的网口端口
upstream tomcat_server{
server XXX:8082;
server XXX:80;
}
}
##创建缓存需要的文件夹
mkdir -p /data/nginx/cache
###配置文件解释
path:强制参数,指定缓存文件的存放路径。
levels:定义了缓存目录的层级。每层可以用1(最多16种选择,0-f)或2(最多256种选择,00-ff)表示,中间用 : 分隔。
proxy_cache_path /data/nginx/cache; 代表所有缓存只有一个目录,比如/data/nginx/cache/d7b6e5978e3f042f52e875005925e51b
proxy_cache_path /data/nginx/cache levels=1:2; 代表缓存是二层目录(有16*256=4096个目录),比如/data/nginx/cache/b/51/d7b6e5978e3f042f52e875005925e51b
keys_zone:强制参数,定义共享内存区的名称和大小,该共享内存用于保存缓存项目的元数据(所有活动的key和缓存数据相关的信息),这样nginx可以快速判断一个request是否命中或者未命中缓存,1m可以存储8000个key,10m可以存储80000个key。
inactive:删除指定时间内未被访问的缓存文件,默认10分钟。
max_size:设置了缓存存储的上限,如果不指定,最大会用掉所有磁盘空间。
use_temp_path:直接把临时文件放在缓存目录中。
###设置缓存
vim /etc/nginx/conf.d/default.conf
###配置文件解释
server {
listen 80;
server_name www.ggl.com;
location / {
proxy_cache my_cache;
#指定用于页面缓存的共享内存,zone名称由proxy_cache_path指令定义
proxy_cache_valid 200 5m;
#为不同的响应状态码设置不同的缓存时间,此为缓存状态码为200的请求,缓存时长为5分钟
proxy_cache_key $request_uri;
#指定缓存文件的key为请求的URI
add_header Nginx-Cache-Status $upstream_cache_status #把缓存状态设置为头部信息,响应给客户端
proxy_pass http://cache_server;
#设置代理转发的后端服务器的协议和地址
}
}
server {
listen 80;
server_name www.ggl.com;
##做静态页面访问
location / {
proxy_cache my_cache;
proxy_cache_valid 200 5m;
proxy_cache_key $request_uri;
add_header Nginx-Cache-Status $upstream_cache_status;
proxy_pass http://cache_server;
}
##做动态页面访问配置
location .*\.jsp$ {
proxy_pass http://tomcat_server;
}
}
取消不需要内容的缓存
对于一些实时性要求非常高的页面或数据来说,就不应该去设置缓存
vim /etc/nginx/nginx.conf
http {
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m
max_size=10g
inactive=60m
use_temp_path=off;
##创建缓存需要的文件夹
mkdir -p /data/nginx/cache
vim /etc/nginx/conf.d/default.conf
server {
listen 80;
server_name www.ggl.com;
#URI 中后缀为 .txt 或 .text 的设置变量值为 "no cache"
if ($request_uri ~ \.(txt|text)$) {
set $cache_name "no cache"
}
location / {
proxy_no_cache $cache_name;
#判断该变量是否有值,如果有值则不进行缓存,如果没有值则进行缓存
proxy_cache my_cache; #设置缓存内存
proxy_cache_valid 200 5m;
#缓存状态为200的请求,缓存时长为5分钟
proxy_cache_key $request_uri;
#缓存文件的key为请求的URI
add_header Nginx-Cache-Status $upstream_cache_status
#把缓存状态设置为头部信息,响应给客户端
proxy_pass http://cache_server; #代理转发
}
}
server {
listen 80;
server_name www.ggl.com;
if ($request_uri ~ \.(txt|text)$) {
set $cache_name "no cache"
}
location / {
proxy_no_cache $cache_name;
proxy_cache my_cache;
proxy_cache_valid 200 5m;
proxy_cache_key $request_uri;
add_header Nginx-Cache-Status $upstream_cache_status;
proxy_pass http://cache_server;
}
}
查看nginx缓存数据
##在网页配置中添加页面
##在ngin 192.168.242.67节点配置
cd /usr/share/nginx/html
echo '<h1>this is 1 web</h1>' > test.html
##在ngin 192.168.242.68节点配置
cd /usr/share/nginx/html
echo '<h1>this is 2 web</h1>' > test.html
nginx -t
systemctl restart nginx
##在另外一台主机或客户端访问192.168.242.69/test
curl 192.168.242.69/test.html
##在nginx缓存服务器192.168.242.69上,查看缓存
cd /data/nginx/cache
##可以看见这个目录下有缓存的目录和文件
cat /data/nginx/cache/c/97/5804fd1475122d946b51ef022d2cb97c
CDN
概念
CDN的全称是Content Delivery Network,即内容分发网络。 其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络”边缘“的节点 ,使用户可以就近取得所需的内容(就近原则),提高用户访问网站的响应速度。 从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速度 CDN的工作原理就是将您源站的资源缓存到位于全球各地的CDN节点上,用户请求资源时,就近返回节点上缓存的资源,而不需要每个用户的请求都回您的源站获取,避免网络拥塞、缓解源站压力,保证用户访问资源的速度和体验
工作原理
1. 用户输入访问的域名,操作系统向 LocalDns 查询域名的ip地址.
2. LocalDns向 ROOT DNS 查询域名的授权服务器(这里假设LocalDns缓存过期)
3. ROOT DNS将域名授权dns记录回应给 LocalDns
4. LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址
5. 域名授权dns 查询域名记录后(一般是CNAME),回应给 LocalDns
6. LocalDns 得到域名记录后,向智能调度DNS查询域名的ip地址
7. 智能调度DNS 根据一定的算法和策略(比如静态拓扑,容量等),将最适合的CDN节点ip地址回应给 LocalDns
8. LocalDns 将得到的域名ip地址,回应给 用户端
9. 用户得到域名ip地址后,访问站点服务器
10. CDN节点服务器应答请求,将内容返回给客户端.(缓存服务器一方面在本地进行保存,以备以后使用,
二方面把获取的数据返回给客户端,完成数据服务过程)