4.Nginx缓存设置和CDN

文章目录

    • 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.hqwc.cn/news/8251.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始 Spring Boot 59:Hibernate 日志

从零开始 Spring Boot 59&#xff1a;Hibernate 日志 图源&#xff1a;简书 (jianshu.com) Hibernate 支持多种日志模块&#xff0c;本文介绍如何在 Spring Boot 中使用 Log4j2记录 Hibernate 日志。 实际上本文是我在写上篇文章时遇到的各种坑和最终解决的记录。 首先需要添加…

【HTTP 协议1】图文详解 HTTP 请求和应答报文

文章目录 前言一、认识 HTTP 协议1, 什么是 HTTP 协议2, HTTP 协议的报文格式 二、HTTP 请求报文1, 认识方法1.1, GET 和 POST 辨析(重点)1.2, 其他方法 2, 认识 URL3, 认识 Header3.1, Host3.2, Content-Length3.3 Content-Type3.4, User-Agent3.5, Referer3.6, Cookie(重点) …

力扣单调栈专题 739. 每日温度 496.下一个更大元素I 503.下一个更大元素II 42. 接雨水 84.柱状图中最大的矩形 步骤及C++实现 总结

文章目录 739. 每日温度496.下一个更大元素 I503.下一个更大元素II方法一 数组拼接方法二 模拟遍历两边nums 42. 接雨水双指针 暴力法双指针优化单调栈 84.柱状图中最大的矩形暴力解法双指针解法单调栈 总结 739. 每日温度 暴力解法&#xff0c;双层for循环&#xff0c;时间复杂…

如何在 MATLAB 中进行图像分割(matlab仿真与图像处理系列第7期)

在 MATLAB 中进行图像分割有多种方法,下面介绍一些常用的方法: 基于阈值的二值化分割这是一种最简单的分割方法,将图像分为两个部分:背景和前景。其主要思想是,选择一个阈值,将图像中的像素值与阈值进行比较,将像素值大于阈值的像素标记为前景(白色),将像素值小于阈值…

17. 订单金额趋势分析

文章目录 题目需求思路一实现一实现二&#xff1a;使用 over(range)学习链接题目来源 题目需求 查询截止每天的最近3天内的订单金额总和以及订单金额日平均值&#xff0c;保留两位小数&#xff0c;四舍五入。 最近三天 的业务逻辑通常是基于当天往前推2天 期望结果如下&#x…

归并排序的具体实现过程

作者主页&#xff1a;paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《算法详解》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心…

【JavaEE初阶】CSS

摄影分享~ 文章目录 一.CSS基本规范1. CSS基本语法规范2.CSS选择器 二.CSS常用属性1. 字体属性2.文本属性3.背景属性4.圆角矩形5.元素的显示模式块级元素行内元素 6.盒子模型边框内边距外边距 7.弹性布局 一.CSS基本规范 层叠样式表。(Cascading Style Sheets) CSS 能够对网页…

【深度学习】AIGC ,ControlNet 论文,原理,训练,部署,实战,教程

论文&#xff1a;https://arxiv.53yu.com/pdf/2302.05543 代码&#xff1a;https://github.com/lllyasviel/ControlNet 得分几个博客完成这个事情的记录了&#xff0c;此篇是第一篇&#xff0c;摘录了一些论文内容。ControlNet 的原理极为朴实无华&#xff08;对每个block添加…

BPMNJS 在HTML中的引入与使用

BPMNJS 在HTML中的引入与使用 在网上看到的大多是基于vue使用BPMN的示例或者教程&#xff0c;竟然没有在HTML使用的示例&#xff0c;有也是很简单的介绍核心库的引入和使用&#xff0c;并没有涉及到扩展库。于是简单看了下&#xff0c;真的是一波三折&#xff0c;坎坎坷坷。不过…

【UE5 Cesium】08-Cesium for Unreal 子关卡应用实例(上)

UE版本&#xff1a;5.1 效果 &#xff08;运行游戏可以看到进入关卡体积内楼房模型才会显现&#xff0c;以此来减少电脑性能消耗&#xff09; 步骤 一、新建两个子关卡&#xff08;以北京和上海为例&#xff09; 点击窗口-》关卡-》新建 命名第一个子关卡为“SubLevel_Bei…

【数据库】使用DBever连接人大金仓数据库

下载安装DBever 首先需要下载并安装DBever&#xff0c;可以在DBever官网上下载最新版的安装程序&#xff0c;根据提示进行安装即可。 下载驱动程序 首先需要从人大金仓官方网站下载适用于DBever的驱动程序。下载完成后&#xff0c;将驱动程序保存到本地计算机上。 添加驱动…

7.4.2 【Linux】特殊设备 loop 挂载 (镜像文件不烧录就挂载使用)

挂载光盘/DVD镜像文件 如此一来我们不需要将这个文件烧录成为光盘或者是 DVD 就能够读取内部的数据了。 创建大文件以制作 loop 设备文件&#xff01; 创建大型文件 假设我要创建一个空的文件在 /srv/loopdev &#xff0c;那可以这样做&#xff1a; 将 512 块&#xff0c;每…