目录
一.简介
二.Nginx的优点
三.反向代理
四.负载均衡
五.动静分离
六.总结
说起Nginx,耳边好像经常听到,但是不知道用来干嘛的。最近用到了,所以我就大概总结了基本知识,它经常与一个词出现在一起——反向代理。那接下来就让我们来看看Nginx到底是干嘛用的。
一.简介
官网是这样说的:
nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev.
翻译:nginx(发音:engine x) 是一个HTTP以及反向代理的服务器,一个邮件代理服务器,和一个通用TCP/UDP代理服务器,最初由lgor Sysoev编写。
Ok,我们知道,Nginx是一个服务器,服务器大家都知道是什么吧,Nginx就相当于在你的机器上运行的一个能帮我们托管代码的服务器,那我们举个例子,整体理解下:就比如说,我现在想搭建一个博客站,源码能在你本机上运行成功,但是你没公网IP,别人不能访问到你的网站,就算通过一些手段能访问成功了,很少有人把自己的电脑作为服务器呀,这个时候云服务器厂商出现了,他们可以提供给我们云服务器,有独立公网IP,但是也不是下载IDE然后跑代码(当然我也不信有人会这样做),我们在我们的云服务器上安装上Nginx,之前不是说了嘛,Nginx就是一个服务器,在云服务器上运行nginx,然后代理我们的源码,成功后,只要通过你的公网IP加你指定的端口,那么任何人都能访问你的网站了,到此,博客站就搭建好了。
当然如果说,只是简单的把它作为一个服务器也就小瞧它了,如果你的网站访问量很高,并发操作多,那nginx就是很好的选择了。
高性能,能处理高并发事件是它的优点,在传统的并发请求不高的网站中,它或许不起眼,但是正因为它的优点让它广泛应用在一些大型Web项目中。
According to Netcraft, nginx served or proxied 20.71% busiest sites in January 2024.
翻译:根据 Netcraft 的数据,2024 年 1 月,nginx 服务或代理了 20.71% 的最繁忙网站。
二.Nginx的优点
Nginx优点:
-
高性能: Nginx以其出色的性能而著称。它采用事件驱动的架构,能够高效地处理大量并发连接,适用于高流量的网站和应用。
-
低资源消耗: 相比一些传统的Web服务器,Nginx占用更少的系统资源。这使得它在资源受限的环境中表现得更加出色。
-
反向代理和负载均衡: Nginx可以作为反向代理服务器,接收客户端请求并将其转发给后端服务器。同时,它支持负载均衡,能够将请求分发到多个后端服务器,提高系统的性能和可用性。
-
静态文件服务: Nginx在提供静态文件服务方面表现出色,能够高效地处理和传输图片、CSS、JavaScript等静态资源。
-
灵活的配置: Nginx的配置文件结构简单而灵活,允许用户根据需要进行定制。支持模块化架构,可以通过添加或删除模块来扩展或精简功能。
-
HTTP和HTTPS支持: Nginx提供对HTTP和HTTPS的全面支持,能够处理安全的加密连接,保障数据传输的安全性。
-
简单的负载均衡策略: Nginx支持多种负载均衡算法,包括轮询、IP哈希、最小连接数等。这使得可以根据具体需求选择适当的负载均衡策略。
-
热部署: Nginx支持热部署,即在不停止服务的情况下重新加载配置文件,使得系统升级和配置更改更加方便。
-
活跃的社区和支持: Nginx有一个庞大而活跃的社区,用户可以获取来自社区的支持、插件和模块,以满足各种需求。
现在,我们对nginx已经有了一定的了解,接下来,就是详细介绍它的三大功能了。
三.反向代理
说到反向代理那么就要先聊聊正向代理,以一个具体的场景来理解:你访问CSDN来看我的博客进行学习,而我发表的博客已经存储在CSDN的服务器上了,那你觉得你打开我的博客,你是直接访问的主体服务器,还是有个代理服务器替你访问,然后又返回给你。答案是后者,原因等会解释。
代理服务器作为中介,服务器端收到的请求并不是真正的用户,这在一定程度上保护了用户的身份,当然代理服务器也决定了你所能访问的网站。比如校园网,学校的一些网站,为什么只能连接了校园网才能访问,因为学校的服务器只允许学校设定的代理服务器访问资源,而这个代理服务器呢,又只代理连接了校园网的用户。
接下来讲反向代理:
反向代理是不是看着和正向代理差不多。但是呢,反向代理服是由服务器端来控制的,举个栗子,在开头说了,我租了云服务器,为了能让大家访问,我用反向代理来托管我的网站,重点!是我用反向代理,就是云服务器上开了反向代理,让大家的访问请求,重定向到这个反向代理服务器上去,然后反向代理服务器向服务器发送请求,接收请求。这不仅保护了服务器的安全,用户看不到本体,让傀儡(代理服务器)出面接收我们的请求。这么好的东西,谁不用呢,你说对不对?
当然不止是这一个功能,接下来就看看负载均衡
四.负载均衡
负载均衡就是把服务器所负载的请求平均给每个服务器,或者一个服务器·性能比较高,那我们既可以让这台服务器负载多一点,争取让资源利用最大化。
既然要分配资源,但是也要有个具体的分法吧,是的,负载均衡算法有很多,列举一些常见的。
- 轮询:很好理解,就是将每个新的请求依次分配给服务器列表中的下一个服务器。这是最简单的负载均衡算法之一。
- 加权轮询:这个方法和轮询相比多一个权重,权重决定了一个请求有多大概率打到这台服务器上。权重越高的服务器分配到的请求越多。
- IP哈希:通过计算客户端的IP哈希值来分配服务器,这确保同一客户端的请求始终被分配到相同的服务器,适用于某些需要保持会话状态的应用。
- 最小连接数:这个分法是这样的,找到负载最少的服务器把请求分配给他,因为连接数少的服务器可能有更多的处理能力。
- 加权最小连接数(Weighted Least Connections): 类似于加权轮询,但是考虑了服务器的当前连接数,以便更好地分配负载。
五.动静分离
动静分离?,动指动态请求资源,静指静态资源,一般是前端Web页面,把两部分离开,不仅有利于服务器端减少请求压力,也能更快的把页面显示给用户。用Nginx缓存静态资源,当用户访问时能迅速把已经缓存好的页面响应给用户,极大了提高用户的体验。而动则是一个API,当用户进一步操作时,Nginx才会对指定API接口发送请求获取资源。
六.总结
最近在学着搭建服务器,用到了Nginx,去学了学,总结了上述内容,也算加强了记忆了,nginx一定要记住了三个点:反向代理,负载均衡,动静分离。
上述内容,如有错误,请指正,谢谢。