【Nginx 快速入门】反向代理、负载均衡、动静分离

简介: 【Nginx 快速入门】反向代理、负载均衡、动静分离

一样东西的诞生通常都是为了解决某些问题,对于 Nginx 而言,也是如此。


比如,你出于无聊写了一个小网站,部署到 tomcat 之后可以正常访问了,好开心。


这时候你的网站用户非常少,不会存在高并发的情况,这时候一个 jar 包启动应用就足够了,然后内部的 tomcat 返回内容给用户。


1268169-20210622222946607-173565109.png


但是后来,你的这个小网站因为内容很诱人逐步的火了,用户越来越多,并发量也慢慢增大,此时一台服务器已经满足不了网站的需求了。


1268169-20210622223606794-1468765084.png


你不能眼睁睁的看着你的“孩子”被压垮呀,于是乎,一咬牙又花钱加了几台服务器。


1268169-20210622224043605-126301629.png


但是问题来了,服务器多了,比如用户1先通过的服务器1登录了,但是后来的请求又到了服务器2上,又是没登录的,这显然是不行的。


所以这时候需要一台代理服务器,帮我们转发和处理请求。于是乎,Nginx 登场了。


一、什么是Nginx


Nginx(engine x)是一个高性能的 http 和反向代理 web 服务器,同时也可以提供 IMAP/POP3/SMTP 邮件服务。


其特点是占用内存少,并发能力强,运行还很文档,几乎可以做到7x24 不间断运行,即使运行数个月也不需要重启。而且,还能在服务不间断的情况下进行软件版本的升级。

Nginx代码完全用C语言编写,官方数据测试表明能够支持高达50000个并发连接数的响应。


你一看 Nginx 这也太好了,赶紧给你的应用加上。


1268169-20210622225403628-1231648193.png


二、反向代理


既然叫反向代理,那么正向代理是什么?


正向代理


比如你想访问 Google 查一些技术问题,但是发现你根本上不去,因为有墙。后来你经过了百度的搜索,找到了一个XX浏览器插件,可以给你当梯子,好爬上去看看外面的世界。


这个插件就是正向代理了,你知道它的作用并且主动使用它做达成目的。


反向代理


与正向代理不同,正向代理用户是有感知的。而反向代理,对用户来说是无感知的,反向代理服务器介于用户和目标服务器之间,对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。


上面给小网站加了个Nginx,利用的就是反向代理。


三、负载均衡


现在有好几台服务器了,也有代理服务器了。但是因为你预算有限,后加的几台服务器配置有高有底,这时候如果能让配置高的服务器多承担点压力,让配置低的少承担点压力就好了。


Nginx的负载均衡就可以完成这样的需求。


1. 轮询


轮询,就是让过来的请求依次访问服务器。


1268169-20210622230824243-704951304.png


2. 加权轮询


加权轮询,可以根据不同的权重来分发各服务器上的请求数量。


1268169-20210622230924824-283938353.png


3. iphash


iphash 对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,这样就解决了 session 不共享的问题。


1268169-20210622231332098-976600408.png


四、动静分离


你的小网站里有些请求是需要后台处理的,但是有些请求是不需要的,比如 css、html、jpg、js等文件,这些统称为静态文件


Nginx可以根据一定规则把不变的资源和经常变的资源区分开,做好了拆分之后,我们就可以根据静态资源的特点将其做缓存操作,从而提高资源响应的速度。


1268169-20210622231752071-386948013.png


OK,通过动静分离,你的小网站响应速度也上去了,用户体验更好了,你终于送了口气。

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
26天前
|
运维 前端开发 应用服务中间件
LNMP详解(八)——Nginx动静分离实战配置
LNMP详解(八)——Nginx动静分离实战配置
28 0
|
18天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
32 0
|
8天前
|
负载均衡 应用服务中间件 nginx
Nginx 负载均衡
Nginx 负载均衡
22 2
|
18天前
|
应用服务中间件 nginx
nginx进行反向代理的配置
在Nginx中设置反向代理的步骤:编辑`/etc/nginx/nginx.conf`,在http段加入配置,创建一个监听80端口、服务器名为example.com的虚拟主机。通过`location /`将请求代理到本地3000端口,并设置代理头。保存配置后,使用`sudo nginx -s reload`重载服务。完成配置,通过example.com访问代理服务器。
25 0
|
1月前
|
负载均衡 应用服务中间件 Linux
|
2月前
|
tengine Rust 负载均衡
反向代理学习笔记(一) Nginx与反向代理绪论
反向代理学习笔记(一) Nginx与反向代理绪论
|
2月前
|
负载均衡 Java 应用服务中间件
|
2月前
|
负载均衡 监控 应用服务中间件
Nginx负载均衡:你的网站流量翻倍利器
Nginx负载均衡:你的网站流量翻倍利器
43 0
|
2月前
|
消息中间件 关系型数据库 MySQL
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
63 0
|
缓存 负载均衡 前端开发
Nginx极简入门(九)Nginx实现动静分离!
前面介绍了Nginx的负载均衡,一般来说,都需要将动态资源和静态资源分开,这样可以很大程度的提升静态资源的访问速度,同时在开过程中也可以让前后端开发并行可以有效的提高开发时间,也可以有些的减少联调时间 。接下来介绍什么是动静分离以及如何使用Nginx实现动静分离。
Nginx极简入门(九)Nginx实现动静分离!