nginx和CDN应用

一、代理的工作机制

1.代替客户机向网站请求数据,从而可以隐藏用户的真实IP地址。
2.将获得的网页数据(静态 Web 元素)保存到缓存中并发送给客户机,以便下次请求相同的数据时快速响应。

二、代理服务器的概念

代理服务器是一个位于客户端和原始(资源)服务器之间的服务器,为了从原始服务器取得内容,客户端向代理服务器发送一个请求并指定目标原始服务器,然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端。

缓存代理对于Web至关重要,尤其对于大型高负载Web站点。缓存可作为性能优化的一个重要手段,可以极大减轻后端服务器的负载。通常对于静态资源,即较少经常更新的资源,如图片,css或js等进行缓存,从而在每次刷新浏览器的时候,不用重新请求,而是从缓存里面读取,这样就可以减轻服务器的压力。

三、代理服务器的作用

资源获取:代替客户端实现从原始服务器的资源获取;
加速访问:代理服务器可能离原始服务器更近,从而起到一定的加速作用;
缓存作用:代理服务器保存从原始服务器所获取的资源,从而实现客户端快速的获取;
隐藏真实地址:代理服务器代替客户端去获取原始服务器资源,从而隐藏客户端真实信息。

四、常用的代理服务器

squid、nginx、varnish、CDN

CDN在云场景中  使用比较多  大量广泛使用

Squid和varnish 传统应用 用得不多

性能上Squid和varnish比较好  但是nginx的管理更加方便

五、nginx缓存代理部署

代理服务器:172.16.23.13

后端服务器:172.16.23.14           172.16.23.15

骤一:首先脚本完成三台nginx的部署

步骤二:在两个后端原始服务器上分别创建测试页面

echo 'this is web02' > /usr/local/nginx/html/test.html
vim /usr/local/nginx/conf/nginx.conf

步骤三:完成nginx缓存服务器配置文件修改

进入/usr/local/nginx
mkdir -p /data/nginx/cache修改配置文件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;#####################################################
●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:直接把临时文件放在缓存目录中。
#####################################################upstream cache_server{server 172.16.23.14:80;server 172.16.23.15:80;}server {listen 80;server_name localhost;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;     #设置代理转发的后端服务器的协议和地址}}
}

步骤四:测试

第一次未击中缓存

第二次访问,命中缓存,直接返回缓存服务器缓存的结果(内容不会切换)

针对一些不需要缓存的数据,如动态资源 

#对于一些实时性要求非常高的页面或数据来说,就不应该去设置缓存,下面来看看如何配置不缓存的内容。
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
server {listen 80;server_name cache.lion.club;#URI 中后缀为 .jsp 或 .php 的设置变量值为 "no cache"if ($request_uri ~ \.(jsp|php)$) {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;  #代理转发}
}详细可参考:
https://blog.csdn.net/qq_34556414/article/details/106490874
https://blog.csdn.net/weixin_30795127/article/details/97385091#proxy_cache_path

六、CDN概念及作用

在最接近用户网络边缘的位置,增加一层CDN缓存代理服务器,将源站点的内容发布到CDN节点,可以使用户就近取得所需的内容,提高用户的访问响应速度。也避免了网络拥塞,缓解了源站点的访问压力。

CDN 内容分发网络,本质上就是一大堆遍布在全球各个角落的缓存服务器。通过与DNS 的配合,找到最靠近用户的一台CDN缓存服务器,然后把数据快速地分发给用户
通过 CDN技术,我们不仅减少了对于整体骨干网的流量负担,还提高了用户的访问速度。

6.1CDN的数据是如何获取的

  • 1、对于热点资源,一般定时做缓存预热
  • 2、对于冷门资源,如果CDN没有,会从上游服务器或源站点获取资源。在同步缓存在CDN节点中

6.2CDN工作原理

将源站点(web应用服务器)的静态网页资源缓存到CDN节点上,用户请求资源时,就近返回CDN节点上缓存的资源,而不需要每个用户的请求都从源站点获取,从而避免了网络拥塞,缓解了源站点的压力,提高用户访问资源的速度。

七、CDN的工作过程

1.浏览器发起静态资源URL请求,经过本地 DNS 解析,会将域名解析权交给域名 CNAME 指向的CDN 专用 DNS 服务器

2.CDN的 DNS 服务器将 CDN 的全局负载均衡设备IP 地址返回给浏览器

3.浏览器向 CDN 全局负载均衡设备发起 URL请求

4.CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的 URL,选择一台用户所属区域的区域负载均衡设备,向其发起请求。

5.区域负载均衡设备会为用户选择最合适的 CDN 缓存服务器 (考虑的依据包括: 服务器负载情况,距离用户的距离等) ,并返回给全局负载均衡设备。

6.全局负载均衡设备将选中的CDN缓存服务器IP 地址返回给用户

7.用户向 CDN 缓存服务器发起请求,缓存服务器响应用户请求,最终将用户所需要偶的内容返回给浏览器。

使用 CDN 服务的网站,只需要将域名解析权交给 CDN 服务商,接着将需要分发的内容上传到CDN,就可以实现内容加速了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/613588.shtml

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

相关文章

Kali安装Xrdp结合内网穿透实现无公网ip远程访问系统桌面

文章目录 前言1. Kali 安装Xrdp2. 本地远程Kali桌面3. Kali 安装Cpolar 内网穿透4. 配置公网远程地址5. 公网远程Kali桌面连接6. 固定连接公网地址7. 固定地址连接测试 前言 Kali远程桌面的好处在于,它允许用户从远程位置访问Kali系统,而无需直接物理访…

vscode在node环境中如何调试

1.在vscode编辑器中,点击左侧的小图标。创建launch.js文件(这个文件创建好以后会在项目的.vscode文件下) 配置文件内容如下,我们只需要关注program字段,这是入口文件,写绝对路径就行 {// 使用 IntelliS…

用Swift库写爬虫采集统计局公开数据

国家统计局公开的信息还是比较真实准确的,他可以给一个行业带来一些参考性意见。因此,有公司找上我,让我爬取一些行业数据,因为是老客户了也就没推辞,但是因为最近也比较忙,也就利用晚上时间加个班搞下。 首…

Python学习从0到1 day1 你好 Python

我会在那腥臭腐朽的日子里熠熠生辉 ——24.1.11 1.第一个Python程序 安装python程序,输出第一个程序:你好,世界 print("Hello World"); 2.Python解释器 python解释器,是一个计算机程序,用来翻译python代码,并提交给计算机执行 功能:1.翻译代码 2.提交给计算机…

自动化测试框架搭建

思想: 1、基本目录的搭建 report:静态输出目录(报告或者日志) data:静态输入目录(可以存放Excel数据,被读取的一些数据) utils:实用方法层(这里存放的是项目的公共方法,一般拿到别…

汽车产线设备CAN总线一键刷写方案

汽车产线设备CAN总线一键刷写方案 一、概述 随着汽车工业的不断发展,CAN总线技术在汽车产线设备中得到了广泛应用。然而,在实际生产过程中,设备的软件升级和配置更改是不可避免的。为了提高生产效率,我们推出了一键刷写CAN总线解…

初识QT。

文章目录 前言一、QWidget1、了解内容main文件中的基本内容。.pro项目文件的内容。mywidget.h文件内容。命名规范和快捷键Qt助手 2、button按钮3、对象树4、信号和槽5、自定义信号和槽函数拓展 6、Lambda表达式7、练习 二、QMainWindow1、菜单栏和菜单项2、工具栏3、状态栏4、铆…

UKP3d和AutoPDMS管道出图线宽的设置

杭州的一家用户A截轴测图在群里,不料被杭州另一家细心的用户B捕捉到了,B带着疑惑,不相信的口吻问到:“优易抽出来的轴测图吗?我的单线图线很细,这个是怎么设置的?” 可惜,杭州用户A回…

SpringBoot 启动流程

一、SpringBoot 启动流程主要可以概括为以下几个步骤: 加载启动类 当 SpringBoot 项目启动时,会在当前工作目录下寻找有SpringBootApplication注解标识的类,并把这个类作为应用程序的入口点。如果找不到这样的主类,则会打印错误信…

Macos下修改Python版本

MacOS下修改Python版本 安装 查看本机已安装的Python版本:where python3 ~ where python3 /usr/bin/python3 /usr/local/bin/python3 /Library/Frameworks/Python.framework/Versions/3.12/bin/python3如果没有你想要的版本,去python官网下载安装包。…

科技云报道:“存算一体”是大模型AI芯片的破局关键?

科技云报道原创。 在AI发展历史上,曾有两次“圣杯时刻”。 第一次发生在2012年10月,卷积神经网络(CNN)算法凭借比人眼识别更低的错误率,打开了计算机视觉的应用盛世。 第二次是2016年3月,DeepMind研发的…

无公网ip如何随时随地远程查看本地群晖NAS存储的文件资源

文章目录 前言本教程解决的问题是:按照本教程方法操作后,达到的效果是前排提醒: 1. 搭建群晖虚拟机1.1 下载黑群晖文件vmvare虚拟机安装包1.2 安装VMware虚拟机:1.3 解压黑群晖虚拟机文件1.4 虚拟机初始化1.5 没有搜索到黑群晖的解…

Linux单主机模拟测试docker macvlan网络

在单台宿主机上使用Linux Bridge,桥接不同网络命名空间(namespace)的方式,模拟测试docker macvlan网络,记录如下: 参考 链接: Macvlan network driver链接: Docker 网络模型之 macvlan 详解,图…

HackTheBox - Medium - Linux - UpDown

UpDown UpDown 是一台中等难度的 Linux 机器,暴露了 SSH 和 Apache 服务器。在Apache服务器上,有一个Web应用程序,允许用户检查网页是否已启动。服务器上标识了一个名为“.git”的目录,可以下载以显示目标上运行的“dev”子域的源…

Neo4j备份

这里主要讲Neo4j在windows环境下如何备份,Linux环境同理 Neo4j恢复看这里:Neo4j恢复-CSDN博客 Step1:停服 关闭neo4j.bat console会话窗口即可 Step2: 备份 找到数据目录,并备份、压缩 copy即可 data - 20240108.7z Step3: 启动服务 进入命令行&am…

浏览器缓存引发的odoo前端报错

前两天,跑了一个odoo16项目,莫名其妙的前端报错, moment.js 报的错, 这是一个时间库,不是我自己写的代码,我也没做过任何修改,搞不清楚为什么报错。以为是odoo的bug,所以从gitee下载…

DevEco Studio for Mac:zsh: command not found: ohpm

一、检查是否配置有ohpm环境 1、新打开一个终端输入export,查看是否有 ohpm路径: 二、如果没有找到ohpm路径,开始配置环境 。 1、查找本机ohpm路径,并记录ohpm解释器的路径: 2、打开终端工具,执行命令 ech…

现代操作系统复习笔记【核心考点知识+重点复习题】

文章目录 一、核心考点基础知识第一章 概述1、操作系统的基本概念、基本功能2、分时系统、批处理系统、实时系统的主要特征3、用户接口、系统调用过程4、单到与多道程序技术5、操作系统虚拟机体系结构6、CPU工作模式;7、部分课后习题 第二章 进程与线程1、进程的基本…

谷粒学院项目redirect_uri 参数错误微信二维码登录

谷粒学院项目redirect_uri 参数错误_redirect_uri": "http%3a%2f%2fguli.shop%2fapi%2fuce-CSDN博客 修改本地配置 # ����˿� server.port8160 # ����&#x…

内存分区模型---C++

目录 内存分区模型1.1 程序运行前1.2 程序运行后1.2.1 new操作符 内存分区模型 C程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的;全局区:存放全局变量和静态变量以及常…