文章目录

    • Nginx缓存设置
      • 设置缓存
      • 取消不需要内容的缓存
      • 查看nginx缓存数据
    • CDN
      • 概念
      • 工作原理

Nginx缓存设置

设置缓存

##在yum配置文件中添加nginx在线源vim /etc/yum.repos.d/nginx.repo[nginx-stable]name=nginx stable repobaseurl=http://nginx.org/packages/centos/7/$basearch/gpgcheck=0enabled=1
##yum安装nginxyum -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/d7b6e5978e3f042f52e875005925e51bproxy_cache_path /data/nginx/cache levels=1:2;代表缓存是二层目录(有16*256=4096个目录),比如/data/nginx/cache/b/51/d7b6e5978e3f042f52e875005925e51bkeys_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为请求的URIadd_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.confhttp {proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60muse_temp_path=off;##创建缓存需要的文件夹mkdir -p /data/nginx/cache
vim /etc/nginx/conf.d/default.confserver {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为请求的URIadd_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/htmlecho '

this is 1 web

' > test.html##在ngin 192.168.242.68节点配置cd /usr/share/nginx/htmlecho '

this is 2 web

' > test.html
nginx -tsystemctl restart nginx##在另外一台主机或客户端访问192.168.242.69/testcurl 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记录回应给 LocalDns4. LocalDns得到域名的授权dns记录后,继续向域名授权dns查询域名的ip地址5. 域名授权dns 查询域名记录后(一般是CNAME),回应给 LocalDns6. LocalDns 得到域名记录后,向智能调度DNS查询域名的ip地址7. 智能调度DNS 根据一定的算法和策略(比如静态拓扑,容量等),将最适合的CDN节点ip地址回应给 LocalDns8. LocalDns 将得到的域名ip地址,回应给 用户端9. 用户得到域名ip地址后,访问站点服务器10. CDN节点服务器应答请求,将内容返回给客户端.(缓存服务器一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程)