夜雨聆风学习资料网

ARTICLE · 1073024

【网络服务器软件】nginx v1.30.5用于托管静态资源或动态内容,处理客户端(浏览器)的 HTTP/HTTPS 请求

【网络服务器软件】nginx v1.30.5用于托管静态资源或动态内容,处理客户端(浏览器)的 HTTP/HTTPS 请求
一、概述

nginx(读作“engine x”)是一款 HTTP Web 服务器、反向代理、内容缓存、负载均衡器、TCP/UDP 代理服务器以及邮件代理服务器。最初由 Igor Sysoev 编写,并以两条款 BSD 许可证(2-clause BSD License)发布。企业版发行版、商业支持和培训服务由 F5, Inc. 提供。

nginx 以其灵活性和高性能、低资源消耗而著称,目前:是全球最受欢迎的 Web 服务器(来源:Netcraft);始终位列最流行的 Docker 镜像之一(来源:DataDog);为多个 Kubernetes Ingress 控制器提供支持,包括官方的实现。


二、版本分类
 nginx官方定义了Mainline、Stable、Legacy三种版本。
1、Mainline version(主线版本)
该版本包含最新的功能和bug修复,被视为开发版,即正在活跃开发中的版本。其版本号通常为单数,例如1.30.5。这个版本的更新较快,可能会引入新的功能和修复,但也可能存在尚未解决的bug。

2、Stable version(稳定版本)

最新稳定版适合生产环境使用。其版本号通常为双数,例如1.26。这个版本经过充分测试和验证,bug较少,适合用于承载实际业务。因此,通常建议在生产环境中使用此版本。

3、Legacy versions(历史版本)

这些版本是之前发布的稳定版,对于需要特定旧版本的兼容性或安全性支持的用户有用。然而,这些版本一般不推荐用于新项目,除非有特殊需求。


三、获取方式

1、 nginx/Windows-1.30.5,zip资源包

https://nginx.org/download/nginx-1.30.5.zip

https://nginx.org/download/nginx-1.30.5.zip.asc

2、nginx-1.30.5,tar.gz资源包

https://nginx.org/download/nginx-1.30.5.tar.gz

https://nginx.org/download/nginx-1.30.5.tar.gz.asc


四、版本变化

https://nginx.org/en/CHANGES-1.30

1) 安全:在使用 HTTP/3 且搭配 OpenSSL 3.5.0 及更早版本时,某些特定配置下

       工作进程(worker process)可能会发生堆内存缓冲区溢出(CVE-2026-90439)。

感谢 Banny Liao 的报告。

    2) 变更:现在,SSL 连接中收到的 QUIC 传输参数扩展(QUIC transport 

       parameters extension)将被始终忽略。

1、基本 HTTP 服务器功能

提供静态文件和索引文件服务,支持自动索引(autoindexing);开放文件描述符缓存;

支持带缓存的加速反向代理;负载均衡与容错;

支持 FastCGI、uWSGI、SCGI 和 Memcached 服务器的缓存加速;负载均衡与容错;

模块化架构。过滤器包括:gzip 压缩、字节范围(byte ranges)、分块响应(chunked responses)、XSLT、SSI(服务器端包含)以及图像转换过滤器。若页面中的多个 SSI 引用由代理或 FastCGI/uWSGI/SCGI 服务器处理,则可并行处理;

支持 SSL 和 TLS 的 SNI(服务器名称指示);

支持 HTTP/2,并提供基于权重和依赖关系的优先级调度;

支持 HTTP/3。

2、其他 HTTP 服务器功能

基于名称和基于 IP 的虚拟服务器;

支持持久连接(keep-alive)和管道化连接(pipelined connections);

访问日志格式自定义、缓冲式日志写入、快速日志轮转及 syslog 日志记录;

支持 3xx–5xx 错误码重定向;

rewrite 模块:使用正则表达式修改 URI;

根据客户端地址执行不同功能;

基于客户端 IP 地址、密码(HTTP 基本身份验证)或子请求结果的访问控制;

HTTP Referer 验证;

支持 PUT、DELETE、MKCOL、COPY 和 MOVE 方法;

FLV 与 MP4 流媒体支持;

响应速率限制;

限制来自同一地址的并发连接数或请求数;

基于 IP 的地理位置识别(geolocation);

A/B 测试;

请求镜像(Request mirroring);

内嵌 Perl 支持;

njs 脚本语言支持。

3、邮件代理服务器功能

使用外部 HTTP 认证服务器将用户重定向至 IMAP 或 POP3 服务器;

使用外部 HTTP 认证服务器对用户进行认证,并将连接重定向至内部 SMTP 服务器;

支持的认证方法:

POP3:USER/PASS、APOP、AUTH LOGIN/PLAIN/CRAM-MD5;

IMAP:LOGIN、AUTH LOGIN/PLAIN/CRAM-MD5;

SMTP:AUTH LOGIN/PLAIN/CRAM-MD5;

支持 SSL;

支持 STARTTLS 和 STLS。

4、TCP/UDP 代理服务器功能

通用的 TCP 和 UDP 代理;

TCP 代理支持 SSL/TLS 及 SNI;

负载均衡与容错;

基于客户端地址的访问控制;

根据客户端地址执行不同功能;

限制来自同一地址的并发连接数;

访问日志格式自定义、缓冲式日志写入、快速日志轮转及 syslog 日志记录;

基于 IP 的地理位置识别;

A/B 测试;

njs 脚本语言支持。

5、架构与可扩展性

采用一个主进程(master)和多个工作进程(worker)模型;工作进程以非特权用户身份运行;

配置灵活;

可在不中断客户端服务的情况下重新加载配置或升级可执行文件;

支持多种事件通知机制:kqueue(FreeBSD 4.1+)、epoll(Linux 2.6+)、/dev/poll(Solaris 7 11/99+)、event ports(Solaris 10)、select 和 poll;

支持多种 kqueue 特性,包括 EV_CLEAR、EV_DISABLE(临时禁用事件)、NOTE_LOWAT、EV_EOF、可用数据量、错误码等;

支持多种 epoll 特性,包括 EPOLLRDHUP(Linux 2.6.17+,glibc 2.8+)和 EPOLLEXCLUSIVE(Linux 4.5+,glibc 2.24+);

支持 sendfile(FreeBSD 3.1+、Linux 2.2+、macOS 10.5+)、sendfile64(Linux 2.4.21+)和 sendfilev(Solaris 8 7/01+);

支持文件异步 I/O(AIO)(FreeBSD 4.3+、Linux 2.6.22+);

支持 DIRECTIO(FreeBSD 4.4+、Linux 2.4+、Solaris 2.6+、macOS);

支持 Accept-filters(FreeBSD 4.1+、NetBSD 5.0+)和 TCP_DEFER_ACCEPT(Linux 2.4+);

约 10,000 个非活跃的 HTTP keep-alive 连接仅占用约 2.5MB 内存;

数据拷贝操作被降至最低。


五、功能介绍

1、高性能与低资源占用

基于事件驱动模型(如 epoll、kqueue),支持数万并发连接。

轻量级,内存占用少,适合高流量场景。

2、反向代理与负载均衡

支持 HTTP/HTTPS/TCP/UDP 协议的反向代理。

提供多种负载均衡算法(轮询、加权轮询、IP哈希、最少连接等)。

3、静态内容服务

高效处理静态文件(图片、CSS、JS 等),性能优于传统服务器。

4、动态内容协作

与 FastCGI(如 PHP-FPM)、uWSGI 等协作处理动态请求。

5、SSL/TLS 支持

提供 HTTPS 服务,支持 OCSP Stapling、Session Resumption 等优化。

6、模块化设计

核心功能通过模块扩展(如 ngx_http_gzip_module、ngx_http_ssl_module)。

支持第三方模块(如 OpenResty 的 Lua 模块)。

7、缓存机制

支持静态资源缓存、FastCGI 缓存,加速内容交付。

8、安全特性

防止 DDoS 攻击,支持速率限制、IP 黑名单等。

HTTP/2、HTTP/3 支持(较新版本)。


六、应用场景

1、作为前端反向代理,聚合后端服务。

2、静态资源托管与 CDN 加速。

3、负载均衡与高可用架构。

5、API 网关与微服务管理。


七、升级建议

1、升级准备

备份配置:检查自定义模块兼容性,备份现有配置与日志。

测试新功能:重点测试 QUIC 相关功能(如 0-RTT、版本协商)及动态 DNS 环境下的负载均衡。

监控性能:关注内存与 CPU 变化,验证预期性能提升。

2、兼容性注意

若需兼容旧版 TLS 协议,需手动调整 ssl_protocols 配置。

新指令需添加到配置文件中以启用。

相关学习资料