4.Nginx缓存设置和CDN

news/2025/1/18 8:47:56/

文章目录

    • 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/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=60m
use_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 '<h1>this is 1 web</h1>' > test.html##在ngin   192.168.242.68节点配置
cd /usr/share/nginx/htmlecho '<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节点服务器应答请求,将内容返回给客户端.(缓存服务器一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程)

http://www.ppmy.cn/news/783361.html

相关文章

Mac上显示实时网速小工具

1.iStat Menus 6 功能较丰富&#xff0c;比如你想看大冬天电脑温度等&#xff0c;毕竟Mac本出现过无法充电和无法开机的情况&#xff0c;明明是90多的点&#xff08;自己MBP2018出现过&#xff09; 下载地址&#xff1a;https://bjango.com/mac/istatmenus/ 激活&#xff1a…

windows10 显示实时网速

一,TrafficMonitor https://xiu.lanzoux.com/b073ycx8d 二,NetSpeedMonitor https://www.softpedia.com/get/Network-Tools/Bandwidth-Tools/NetSpeedMonitor.shtml

判断Iphone,Ipad当前网络状态

1、到苹果管网下载Reachability的Demo&#xff0c;https://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html 然后把&#xff1a;Reachability.h 和 Reachability.m 添加到工程中 2、使用如下方法就能判断当前是否联网&#xff1a; bool CC…

安卓开发——显示网速

相信大家在开发过程中经常需要为用户显示网速吧&#xff0c;不着急&#xff0c;咋们一步一步集成 1、计算网速函数 将该函数写到工具类里 /*** 得到网络速度* param context* return*/public static String getNetSpeed(Context context) {String netSpeed "0 kb/s&quo…

Android网速的显示

一、实现思路&#xff1a; 1、Android提供有获取当前总流量的方法 2、上一秒 减去 下一面的流量差便是网速 3、注意计算 二、计算网速的工具类&#xff1a; package imcs.cb.com.viewapplication.utils;import android.content.Context; import android.net.TrafficStats;…

win10-win11任务栏网速实时监控显示

两个软件 NetSpeedMonitor 百度网盘提取码&#xff1a;wub5 需要先选一下兼容性 正常安装即可 打开的话 其他设置自己看吧 TrafficMonitor 介绍: TrafficMonitor GitHub 下载: TrafficMonitor GitHub Download 比上一个好用多了 还能自定义皮肤

状态栏网速显示

使用工具&#xff1a;apktool&#xff0c;需要及时更新&#xff0c;不然解包或是打包是会出错&#xff1b; 制作步骤&#xff1a; 1、提取官方固件里的SystemUI.apk 、framework-res.apk以及不同厂商自己定制的framework&#xff0c;例如&#xff1a;华为的是framework-res-hwe…

Mybatis中Mapper.xml动态SQL where和set要注意的两个问题

1、where标签只有帮你动态去掉and和or的作用&#xff0c;它不能帮你动态添加&#xff01; select * from emp<where><if test"name!null">name like concat(%, #{name}, %)</if><if test"gender!null">and gender #{gender}</…