Nginx配置、原理学习

本文深入探讨Nginx的配置与工作原理,包括反向代理、正向代理及其优缺点,负载均衡策略(轮询、权重、ip_hash等),以及动静分离。讲解了Nginx的安装、常用命令和配置文件,并介绍了Nginx在高并发、安全性和静态资源处理方面的优势。此外,还讨论了Nginx的执行模型(Reactor模型)、进程结构和限流原理。最后,提出了Nginx在解决前端跨域问题中的作用和面试常见问题。
摘要由CSDN通过智能技术生成

Nginx基本概念

定义

Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名

Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是在BSD-like 协议下发行。其特点是占有内存小并发能力强,事实上Nginx的并发能力在同类型的网页服务器中表现较好

Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,支持高达50000个并发连接数

image-20211104165016365

反向代理

正向代理

定义

一般的访问流程是客户端直接访向目标服务器发送请求并获取内容,使用正向代理后,客户端改为向代理服务器发送请求,并指定目标服务器(原始服务器)然后有代理服务器和原始服务器通信,转交请求并获得内容,再返回给客户端。正向代理隐藏了真实的客户端,为客户端收发请求,使真实客户端对服务器不可见

举例:浏览器无法访问谷歌,这时候可以通过一个代理服务器来帮助你访问谷歌,这个服务器就叫正向代理

反向代理

定义

与一般流程相比,使用反向代理后,直接收到请求的服务器是代理服务器,然后将请求转发给内部网络上真正进行处理的服务器,得到的结果返回给客户端。反向代理隐藏了真实的服务器,为服务器收发请求,使真实的服务器对客户端不可见,一般在处理跨域请求的时候比较常用

举例:饭店吃饭,可以点川菜、粤菜、江浙菜,饭店也分别有三个菜系的厨师 👨‍🍳,但是你作为顾客不用管哪个厨师给你做的菜,只用点菜即可,小二将你菜单中的菜分配给不同的厨师来具体处理,那么这个小二就是反向代理服务器

image-20211104165036731

简单来说,一般给客户端做代理的都是正向代理,给服务器做代理的就是反向代理

使用反向代理的优点

反向代理服务器可以隐藏源服务器的存在和特征。它充当互联网云和web服务器之间的中间层。这对于安全方面来说是很好的,特别是当您使用web托管服务时

负载均衡

一般情况下,客户端发送多个请求到服务器,服务器处理请求,其中一部分可能要操作一些资源比如数据库、静态资源等,服务器处理完毕后,再将结果返给客户端

这种模式对于早起的系统来说,功能要求不复杂,且并发请求相对较少的情况下还能胜任,成本也低。随着信息数量不断增长,访问量和数据量飞速增长,以及系统业务复杂度持续增加,这种做法已无法满足要求,并发量特别大时,服务器容易崩

请求爆发式增长的情况下,单个机器性能再强劲也无法满足要求了,这个时候集群的概念产生了,单个服务器解决不了的问题,可以使用多个服务器,然后将请求分发到各个服务器上,将负载分发到不同的服务器上,这就是负载均衡,核心是「分摊压力」。Nginx 实现负载均衡,一般来说指的是将请求转发给服务器集群

image-20211104165106072

负载均衡算法怎么实现的

为了避免服务器崩溃,通过负载均衡的方式来分担服务器的压力,将多态服务器组成一个集群,当用户访问时,先访问到一个转发服务器,再由转发服务器将访问分发到压力刚小的服务器

负载均衡策略

轮询

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某个服务器宕机,能自动剔除故障系统

upstream myserver {
   
	server 127.0.0.1:8080;
	server 127.0.0.1:8081;
}
权重
  • weight的值越大分配
  • 到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。其次是为在主从的情况下设置不同的权值,达到合理有效的地利用主机资源。
upstream myserver {
       
	server 127.0.0.1:8080 weight=8;    
	server 127.0.0.1:8081 weight=2;
}
  • 权重越高,在被访问的概率越大,如上例,分别是20%,80%。
ip_hash(IP绑定)

每个请求按访问IP的哈希结果分配,使来自同一个IP的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的session共享问题

upstream myserver {
       
	ip_hash
	server 127.0.0.1:8080;    
	server 127.0.0.1:8081;
}
fair(第三方插件)
  • 必须安装upstream_fair模块
  • 对比 weight、ip_hash更加智能的负载均衡算法,fair算法可以根据页面大小和加载时间长短智能地进行负载均衡,响应时间短的优先分配
  • 哪个服务器的响应速度快,就将请求分配到那个服务器上
upstream myserver {
   
	server 127.0.0.1:8080;
	server 127.0.0.1:8081;
	fair
}
url_hash(第三方插件)
  • 必须安装Nginx的hash软件包
  • 按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率

动静分离

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

image-20211105132448574

一般来说,都需要将动态资源和静态资源分开,由于Nginx的高并发和静态资源缓存等特性,经常将静态资源部署在Nginx上,如果请求的是静态资源,直接到静态资源目录获取资源,如果是动态资源的请求,则利用反向代理的原理,把请求转发给对应后台应用去处理,从而实现动静分离

使用前后端分离后,可以很大程度提升静态资源的访问速度,即使动态服务不可用,静态资源的访问也不会受到影响。

Nginx的优缺点

优点

  1. 占用内存小,可以实现高并发连接,处理响应快
  2. 可实现http服务器、虚拟主机、方向代理、负载均衡
  3. Nginx配置简单
  4. 可以不暴露真正的服务器IP地址

缺点

动态处理差:Nginx处理静态文件好,耗费内存少,但是处理动态页面很慢,现在一般前端用nginx作为反向代理抗住压力

应用场景

  1. http服务器。Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器
  2. 虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机
  3. 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会应为某台服务器负载高宕机而某台服务器闲置的情况
  4. nginx 中也可以配置安全管理、比如可以使用Nginx搭建API接口网关,对每个接口服务进行拦截

Nginx安装、常用命令及配置文件

Nginx下载地址

Nginx安装

yum无法安装,缺少rpm包

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

然后使用yum安装

yum list | grep nginx
image-20211105132933116
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值