【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,通过动静分离,你的小网站响应速度也上去了,用户体验更好了,你终于送了口气。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
负载均衡 网络协议 算法
一文读懂什么是Nginx?它能否实现IM的负载均衡?
Nginx(及其衍生产品)是目前被大量使用的服务端反向代理和负载均衡方案,从某种意义上来讲,Nginx几乎是低成本、高负载Web服务端代名词。 如此深入人心的Nginx,很多人也想当然的认为,在IM或消息推送等场景下是否也能使用Nginx来解决负载均衡问题? 另外,即时通讯网的论坛和QQ群里也经常有人问起,Nginx是否能支持TCP、UDP、WebSocket的负载
375 4
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
391 21
|
负载均衡 Java 应用服务中间件
Tomcat与Nginx的负载均衡与动静分离技巧
总的来说,Tomcat和Nginx各有各的优点,在负载均衡和动静分离这两方面它们都有很好的应用。灵活使用这两个工具能够让Web应用具有更好的扩展性和用户体验。
375 14
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
467 11
|
负载均衡 算法 应用服务中间件
Nginx长连接负载均衡详细说明以及案例
本文详细介绍了Nginx长连接负载均衡的配置与原理。长连接(Keepalive)允许客户端和服务器保持连接,减少建立和关闭连接的开销。Nginx支持多种负载均衡算法,如轮询、IP哈希等。通过在Nginx配置文件中使用`upstream`模块和`keepalive`指令,可以实现长连接负载均衡,从而提高系统的性能和响应速度。示例配置展示了如何设置后端服务器组、长连接数及HTTP/1.1协议,确保连接复用,降低延迟。
772 5
|
负载均衡 应用服务中间件 nginx
如何使用nginx实现负载均衡?
如何使用nginx实现负载均衡?
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
1096 9
|
负载均衡 算法 应用服务中间件
Nginx的负载均衡
Nginx 是一款高性能的Web服务器与反向代理服务器,支持负载均衡功能,能有效提升系统性能与可靠性。其负载均衡策略包括基于轮询和权重的分配方法,以及IP哈希、最小连接数等算法,可根据实际需求灵活选择。
430 5
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
954 3
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
410 2