nginx和CDN应用

目录

1.代理的工作机制

2.代理服务器的概念

3.代理服务器的作用

4.常见的缓存代理应用

5.nginx缓存代理部署

[5.1 yum安装三台nginx](#5.1 yum安装三台nginx)

[5.2 准备测试界面](#5.2 准备测试界面)

[5.3 设置nginx缓存服务器配置](#5.3 设置nginx缓存服务器配置)

[5.4 网页测试](#5.4 网页测试)

6.CDN概念及作用

[6.1 CDN的工作过程](#6.1 CDN的工作过程)

[6.2 CDN是如何获取内容?](#6.2 CDN是如何获取内容?)


1.代理的工作机制

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

2.代理服务器的概念

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

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

3.代理服务器的作用

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

4.常见的缓存代理应用

本地实现:squid、nginx、varnish
云环境远端实现:CDN

数据库缓存代理:Redis、Memcached

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

Squid和varnish 传统应用 用得不多

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

5.nginx缓存代理部署

准备三台服务器:192.168.9.114;192.168.9.115;192.168.9.116

5.1 yum安装三台nginx

所有虚拟机

复制代码
初始化操作
systemctl disable --now firewalld
setenforce 0
vim /etc/selinux/config
SELINUX=disabled
cd /etc/yum.repos.d
将nginx.repo拖入各服务器
yum install -y nginx
systemctl enable --now nginx

5.2 准备测试界面

192.168.9.115;

复制代码
cd /usr/share/nginx/html
--------------------------------------------------------------------

vim test.html
<html>
<body>
<h1>this is test web page</h1>
<img src="111.png">
</body>
</html>
---------------------------------------------------------------------

在该目录下上传111.png和222.png两张测试图片

网页测试:

192.168.9.116;

复制代码
cd /usr/share/nginx/html
--------------------------------------------------------------------

vim test.html
<html>
<body>
<h1>this is test2 web page</h1>
<img src="222.png">
</body>
</html>
---------------------------------------------------------------------

在该目录下上传111.png和222.png两张测试图片

网页测试:

192.168.9.115;192.168.9.116。关闭两台服务器长连接

systemctl restart nginx重启服务

5.3 设置nginx缓存服务器配置

192.168.9.114

复制代码
mkdir /data/nginx/cache -p
chown nginx:nginx /data/nginx/cache

vim /etc/nginx/nginx.conf
proxy_cache_path /data/nginx/cache levels=1 keys_zone=my_cache:    10m max_size=10g inactive=60m use_temp_path=off;   #31行添加

#####################################################
●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 webservers {
         server 192.168.9.115:80;
         server 192.168.9.116:80;
 }
  ###定义服务器池
复制代码
vim /etc/nginx/conf.d/default.conf
删除原本8.9两行

    server {
        listen 80;
        server_name www.xy101.com;
        location / {
            proxy_cache my_cache;               #指定用于页面缓存的共享内存,zone名称由proxy_cache_path指令定义
            proxy_cache_valid 200 60m;          #为不同的响应状态码设置不同的缓存时间,此为缓存状态码为200的请求,缓存时长为60分钟
            proxy_cache_key $request_uri;       #指定缓存文件的key为请求的URI
            add_header Nginx-Cache-Status $upstream_cache_status;      #把缓存状态设置为头部信息,响应给客户端
            proxy_pass http://webservers;     #设置代理转发的后端服务器的协议和地址
        }
    
systemctl restart nginx

5.4 网页测试

6.CDN概念及作用

CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中增加一层新的CACHE(缓存)层,将网站的内容发布到最接近用户的网络"边缘"的节点,使用户可以就近取得所需的内容(就近原则),提高用户访问网站的响应速度。从技术上全面解决由于网络带宽小、用户访问量大、网点分布不均等原因,提高用户访问网站的响应速度。

CDN的优势:

(1)CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低;
(2)大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源站的负载。

6.1 CDN的工作过程

6.2 CDN是如何获取内容?

1.让用户直接访问资源,如果CDN有资源则可以命中缓存并直接响应返回给用户;如果没有命中到缓存,则会将请求发送给上游源站点服务器获取资源,并同步到CDN的缓存中

2.对于热点资源,则要预先做缓存预热,再让用户访问资源,即可直接命中CDN中的缓存直接响应返回给用户

相关推荐
gongfeng30001 小时前
福州企业级AI自动化获客解决方案品牌梳理与适用场景分析
运维·人工智能·自动化·g-claw ai员工
螺蛳粉 螺蛳粉2 小时前
MySQL 分布式集群系列 · 第五篇——全方位对比:NDB、MGR、主从复制、分库分表怎么选?
数据库·分布式·mysql
光电笑映3 小时前
网络通信基础:从协议分层到 Socket 编程预备
linux·运维·服务器·网络
微小冷3 小时前
用Mermaid画时序图
运维·流程图·时序图·mermaid·生命线
其实防守也摸鱼4 小时前
Codex 下载与本地部署实战:从安装到运行全指南
android·大数据·运维·安全·自动化
wdfk_prog4 小时前
ROS教程07:从 ros::start() 顺着源码读懂 Master、XML-RPC 与 Topic 注册发现
运维·缓存·docker·容器·ros
吴声子夜歌4 小时前
Shell编程实例——与解析相关的任务(二)
linux·运维·shell
mengge.cloud4 小时前
0917Docker 小白实验教程(理论+实操)
linux·服务器·网络·docker
倔强的石头1065 小时前
【Linux指南】动静态库系列(八):ELF 加载与进程地址空间:程序还没运行,为什么已经有地址
linux·运维
两点王爷5 小时前
常用的 Docker 镜像拉取地址仓库及常用命令详解
运维·服务器·容器