Nginx笔记
Nginx基础
什么是Nginx?
Nginx 是一款常用的轻量级、高性能的反向代理服务器软件,主要用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 等协议。它的优势在于高效的反向代理和负载均衡能力,可以处理大量并发连接。大概可以处理2-3万并发连接数,官方监测能支持5万并发
Nginx有什么优点?
- 高性能:Nginx 使用事件驱动的异步架构,能够支持大量并发连接,处理效率高
- 反向代理:Nginx 可以作为反向代理,将请求转发到后端服务器,提供负载均衡和缓存等功能。
- 高可用性:Nginx 支持热部署和动态配置,不需要重启即可生效,提供了高可用性和灵活性。
- 高扩展性:Nginx 支持模块化架构,可以通过添加第三方扩展来满足不同需求。
- 轻量级:Nginx 的代码设计简单,内存占用少,适合用于资源受限的环境。
为什么Nginx性能高?
- 事件处理机制:Nginx 使用基于事件驱动的处理模型,采用异步非阻塞 IO 操作,充分利用系统资源,提高并发能力。
- 高效的网络模块:Nginx 内置了高效的网络模块,包括 TCP/UDP 监听、HTTP 解析和缓存等,提升网络处理性能。
- 轻量级进程:Nginx 采用多进程或多线程的方式处理请求,每个进程只占用较少的内存,减少了上下文切换的开销。
- 负载均衡:Nginx 提供负载均衡功能,可以将请求分发到多个后端服务器上,平衡负载,提高性能和可靠性。
Nginx有什么应用场景?
- 反向代理和负载均衡:将请求分发到多个后端服务器,提高性能和可靠性。
- 静态文件服务器:可以作为静态内容的Web服务器,用来快速、高效地提供静态文件,如图片、CSS 和 JavaScript 等。
- 缓存服务器:缓存静态内容或动态内容,以提高访问速度。
- SSL/TLS 终端代理:作为 SSL/TLS 终端,解密请求并将其转发到后端服务器进行处理。
- HTTP/2 服务器:支持 HTTP/2 协议的高性能 Web 服务器。
Nginx是怎么处理请求的?
- 客户端发送请求:从客户端发起HTTP或HTTPS请求,将请求发送到Nginx服务器。
- Nginx接收请求:Nginx服务器接收到客户端的请求,并根据预先设置的监听端口、虚拟主机等配置进行匹配。
- 请求匹配:根据配置文件中的规则和条件,Nginx匹配请求,确定如何处理该请求。这些规则可以包括虚拟主机配置、URL路由、反向代理等。
- 处理静态资源:如果请求是针对静态资源(如HTML、CSS、JavaScript、图像等),Nginx可以直接从磁盘中读取并返回给客户端,无需转发给后端服务器。
- 反向代理和负载均衡:如果请求需要转发给后端服务器,Nginx可以作为反向代理将请求转发给一个或多个后端服务器。Nginx可以基于负载均衡算法(如轮询、IP哈希、最少连接数等)选择合适的后端服务器进行请求转发,实现请求的分发和负载均衡。
- 等待后端服务器响应:Nginx将请求转发给后端服务器,并等待后端服务器处理请求并返回响应结果。
- 返回响应给客户端:一旦Nginx收到后端服务器的响应,它将把响应结果返回给客户端。如果需要,Nginx还可以进行一些处理,如HTTP头的修改、内容过滤等。
- 维持持久连接:Nginx可以在响应返回给客户端后,保持与客户端的TCP连接,以便在之后的请求中继续使用该连接,提高性能和效率。
正向代理与反向代理
什么是正向代理?
正向代理,也叫做“客户端代理”,客户端通过正向代理服务器发送请求,代理服务器将请求转发给目标服务器,并将响应返回给客户端。在正向代理中,客户端需要知道代理服务器的存在,发起请求时要显式指定代理服务器。流程如下:
- 客户端配置代理:客户端需要手动配置代理服务器的地址和端口,告知客户端使用代理进行访问。
- 客户端发起请求:客户端发送请求到代理服务器,请求中的目标地址为最终要访问的资源服务器。
- 代理服务器接收请求:代理服务器接收到客户端的请求。
- 代理服务器转发请求:代理服务器将客户端的请求转发给目标服务器。
- 目标服务器响应请求:目标服务器接收到代理服务器的请求后,处理并生成响应结果。
- 代理服务器接收响应:代理服务器接收到目标服务器的响应结果。
- 代理服务器返回响应:代理服务器将目标服务器的响应结果返回给客户端。
- 客户端接收响应:客户端通过代理服务器收到目标服务器的响应结果。

什么是反向代理?
反向代理,也叫做“服务器代理”,客户端发送请求到反向代理服务器,代理服务器根据配置的规则将请求转发给具有该资源的后端服务器,并将响应返回给客户端。在反向代理中,客户端不知道代理服务器的存在,也不知道实际提供资源的后端服务器。
- 客户端发起请求:客户端向反向代理服务器发送请求,请求中的目标地址是指向反向代理服务器。
- 反向代理服务器接收请求:反向代理服务器接收到客户端的请求。
- 反向代理服务器确定后端服务器:反向代理服务器根据配置的规则和负载均衡算法,确定要将请求转发给哪个后端服务器来处理。
- 反向代理服务器转发请求:反向代理服务器将客户端的请求转发给选定的后端服务器。
- 后端服务器处理请求:后端服务器接收到反向代理服务器转发的请求,并处理请求并生成响应结果。
- 后端服务器将响应发送给反向代理服务器:后端服务器将处理完毕的响应结果发送给反向代理服务器。
- 反向代理服务器接收响应:反向代理服务器接收到后端服务器的响应结果。
- 反向代理服务器返回响应:反向代理服务器将后端服务器的响应结果返回给客户端。
- 客户端接收响应:客户端通过反向代理服务器收到后端服务器的响应结果。

使用反向代理服务器的优点是什么?
- 负载均衡:反向代理服务器可以将请求分发到多个后端服务器上,实现负载均衡。通过根据服务器的负载情况智能地分配请求,可以提高系统的性能和可扩展性。
- 安全性增强:反向代理服务器作为前端与外部通信的接口,可以提供一层保护,防止外部攻击直接访问到后端服务器。它可以过滤恶意请求、进行访问控制、实施SSL/TLS终端代理等安全策略,增强系统的安全性。
- 缓存加速:反向代理服务器可以缓存静态内容或动态内容,减轻后端服务器的负载,提高响应速度。通过缓存常用的资源,可以减少对后端服务器的请求,提升用户体验。
- 系统解耦:通过使用反向代理服务器,可以将前端与后端服务器解耦,使其相互独立运行。这样可以简化系统架构,提高系统的可维护性和灵活性。
- 高可用性:反向代理服务器可以动态地管理、添加或删除后端服务器。当某个后端服务器不可用时,反向代理服务器可以自动切换到其他可用的服务器,确保服务的高可用性。
- 网络优化:反向代理服务器可以通过对请求进行压缩、合并或重定向等操作,优化网络传输,并减少对带宽的需求。这有助于提升网站的性能和用户体验。
Nginx安装
| 版本 | 概括 |
|---|---|
| Mainline version | Mainline 是 Nginx 目前主力在做的版本,可以说是开发版 |
| Stable version | 最新稳定版,生产环境上建议使用的版本 |
| Legacy versions | 遗留的老版本的稳定版 |
使用yum安装Nginx
(1)安装yum-utils
1 | sudo yum install yum-utils |
(2)添加Nginx的yum资源库
1 | rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm |
(3)使用yum命令安装 nginx
1 | yum -y install nginx |
默认地址
| 路径 | 简介 |
|---|---|
| /etc/nginx/nginx.conf | yum方式安装后默认配置文件的路径 |
| /usr/share/nginx/html | nginx网站默认存放目录 |
| /usr/share/nginx/html/index.html | 网站默认主页路径 |
Nginx基本使用
系统管理Nginx
| 操作 | 简介 |
|---|---|
| systemctl start nginx | 启动nginx |
| service stop nginx | 快速停止nginx |
| service quit nginx | 优雅的停止nginx |
| service reload nginx | 重新加载nginx配置 |
| systemctl enable nginx.service | 设置nginx开机自启动 |
| systemctl disable nginx | 禁止开机自启 |
| nginx -v | 查看版本信息 |
| systemctl status nginx | 查看nginx状态 |
| ps -ef | grep nginx | 查看进程apache/httpd |
| netstat -anpl | grep ‘nginx’ | 查看服务端口 |
Nginx操作命令
| 操作 | 简介 |
|---|---|
| nginx -t 配置文件路径 | 测试指定配置文件是否有语法错误 |
| nginx -c 配置文件路径 | 指定配置文件启动Nginx,默认配置目录:/etc/nginx/nginx.conf |
| nginx -s stop | 快速关闭 |
| nginx -s quit | 优雅的关闭 |
| nginx -s reopen | 重启 |
| nginx -s reload | 重新加载配置 |
测试启动
(1)启动nginx
1 | systemctl start nginx |
(2)查看进程和端口
1 | 查看进程 |
(3)访问http://主机地址/(需要关闭防火墙)

Nginx配置文件
配置文件组成
通常来说,Nginx 的主配置文件 nginx.conf有很多模块组成
| 模块 | 说明 |
|---|---|
| 全局块(Global Block) | 全局模块,用于配置全局指令,这些配置将适用于整个Nginx服务器。 |
| events块 | 事件处理模块,用于配置与连接相关的指令。 |
| http块 | 核心模块,用于配置HTTP协议相关的指令。一个http块包含一个或多个server块,每个server块代表一个或多个虚拟主机。 |
| server块 | 虚拟主机模块,用于配置单个HTTP服务器的指令。一个server块包含一个或多个location块,对应着一个或多个URL地址。 |
| location块 | URL匹配映射模块,用于配置请求URI与资源文件之间的映射关系,如反向代理、重定向、访问限制等。 |
配置文件详解
(1)打开配置文件
1 | vim /etc/nginx/nginx.conf |
1 | 全局块----------------------------------------------------------------------------------------------------- |
(2)在上面include引入的路径下创建server块的配置
1 | vim /etc/nginx/conf.d/default.conf |
1 | server { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 远方の博客!
评论
GitalkValine





