才子佳人博客

我的故事我讲述

Nginx(engine x)简介
 
来源:blog.csdn.net  编辑:xjh  2025-01-28

摘要:Nginx(发音为"engine-x")是一款高性能、轻量级的开源Web服务器软件,也可用作反向代理服务器、负载均衡器和HTTP缓存等。Nginx之所以有被称为“反向”代理,是因为它充当客户端设备和Web服务器之间的中介或中间人,执行与传统或正向代理相比在相反方向上的功能。Nginx可用于Web服务器、正向代理、反向代理、负载均衡、动静分离。

1、Nginx概述

Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

2、Nginx作为Web服务器

Nginx可以作为静态页面的web服务器,同时还支持CGI协议的动态语言,比如perl、php等。但是不支持java。Java程序只能通过与tomcat配合完成。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。

3、正向代理

如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。正向代理位于用户设备(客户端)和互联网之间。它代表客户端访问互联网资源。

正向代理的用途:

保护客户端:它保护客户端免受直接暴露在互联网上的风险,增加了一层安全性。

绕过浏览限制:它可以帮助用户绕过网络或防火墙施加的限制。

阻止对特定内容的访问:它可以根据预定义规则过滤或阻止特定内容的访问。

4、反向代理(重点)

反向代理应该是Nginx使用最多的功能了,只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

简言之,反向代理接受来自客户端的请求,将这些请求转发到Web服务器等,然后将结果返回给客户端,就好像代理服务器本身处理了该请求一样,它代表服务器。

反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

反向代理的用途:

保护服务器:它充当客户端和后端服务器之间的屏障,增强了服务器的安全性。

负载均衡:它将来自客户端的请求分发到多个服务器,以确保资源的最佳利用率,并防止任何单个服务器过载。

缓存静态内容:它可以缓存静态资源,如图像或CSS文件,减轻后端服务器的负载并提高性能。

加密和解密SSL通信:它可以处理SSL/TLS加密和解密,将这项任务从后端服务器卸载。

在配置Nginx作为反向代理服务器时,有几种常见模式可以实现不同的需求:

1)单一服务器模式:这是最基本的反向代理模式,适用于单个后端服务器的场景。

2)负载均衡模式:适用于有多个后端服务器,需要通过负载均衡来分散请求的场景。

3)动态服务器列表模式(基于健康检查):适用于需要动态添加或移除后端服务器的场景,例如基于健康检查自动调整负载均衡池。

4)基于路径的负载均衡(路径分发):适用于需要将请求根据URL路径分发到不同后端服务器的场景。

实质上,“反向”在反向代理中的术语表示它代表服务器,处理客户端请求并与后端服务器进行通信。这与正向代理形成对比,后者代表客户端以访问互联网资源。Nginx作为反向代理的能力使其成为提升Web服务器安全性、性能和可扩展性的工具。

5、负载均衡

负载均衡也是Nginx常用的一个功能,负载均衡其意思就是将负载分摊到多个服务器上进行执行,从而共同完成工作任务。

客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回给客户端。
  
这种架构模式对于早期的系统相对单一,并发请求相对较少的情况下是比较适合的,成本也低。但是随着信息数量的不断增长,访问量和数据量的飞速增长,以及系统业务的复杂度增加,这种架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情况呢?
  
我们首先想到的可能是升级服务器的配置,比如提高CPU执行频率,加大内存等提高机器的物理性能来解决此问题,但是我们知道摩尔定律的日益失效,硬件的性能提升已经不能满足日益提升的需求了。最明显的一个例子,天猫双十一当天,某个热销商品的瞬时访问量是极其庞大的,那么类似上面的系统架构,将机器都增加到现有的顶级物理配置,都是不能够满足需求的。那么怎么办呢?
  
上面的分析我们去掉了增加服务器物理配置来解决问题的办法,也就是说纵向解决问题的办法行不通了,那么横向增加服务器的数量呢?这时候集群的概念产生了,单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。

6、动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。

动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。

7、使用Nginx的原因

互联网飞速发展的今天,大用户量高并发已经成为互联网的主体。怎样能让一个网站能够承载几万个或几十万个用户的持续访问呢?答案是负载均衡。

负载均衡就是一个服务器解决不了的问题可以通过多个服务器来平均分担压力来解决,并发过来的请求被平均分配到多个后台服务器来处理,这样压力就被分解开来。
                   
原文参考链接:
https://blog.csdn.net/m0_65152767/article/details/140187890
https://cloud.tencent.com/developer/article/2426119
https://cloud.tencent.com/developer/article/2385558
https://cloud.tencent.com/developer/article/1348712 Nginx(三)nginx 反向代理
https://cloud.tencent.com.cn/developer/article/1837841
https://lnmp.org/nginx.html
https://news.netcraft.com/archives/category/web-server-survey/

分类:网络日志| 查看评论
相关文章
文章点击排行
本年度文章点击排行
发表评论:
  • 昵称: *
  • 邮箱: *
  • 网址:
  • 评论:(最多100字)
  • 验证码: