Nginx 是一个开源的反向代理 Web 服务器。它因其负载均衡、缓存、可扩展性和低资源消耗功能而被广泛使用。它提供 HTTPS 服务器功能,主要是为了实现最佳性能。为了充分利用其功能,正确的配置和微调是必不可少的。在本文中,我们将详细介绍微调 Nginx 的细节,以及最大限度地提高性能和资源利用率的最佳实践。
负载平衡和工作进程
Nginx 的工作进程处理传入的连接和请求。确定为实现最佳性能和资源利用率而处理的最佳工作线程数量非常重要。一般建议将 worker 进程的数量设置为等于可用 CPU 内核的数量 [1]。但是,这种方法可能并非在所有情况下都是最佳的,因为它可能会因工作负载类型、可用内存和 I/O 操作等其他因素而异。
最近的研究探索了更先进的工作进程分配技术,例如基于实时负载监控的动态工作进程调整 [2]。此方法可确保系统根据当前系统负载动态分配工作进程,从而提高资源利用率和响应能力。
此外,负载平衡是 Nginx 配置的另一个关键方面。Nginx 提供了各种负载均衡算法,例如轮询、最少连接和 IP 哈希。选择合适的算法取决于应用程序的要求和流量模式。例如,最小连接算法更适合请求处理时间不同的工作负载,而 IP 哈希算法适用于具有会话持久性的应用程序 [3]。
TTP/2 和 HTTP/3 支持
Nginx 为最新的 HTTP 协议(如 HTTP/2 和 HTTP/3)提供原生支持。启用 HTTP/2 和 HTTP/3 可以提高您网站的性能,这要归功于将多个请求捆绑到一个连接中、压缩标头和减少延迟等功能。
在深入研究之前,您必须确保客户端的浏览器和服务器与这些新的 HTTP 协议兼容。与您现有的设置或应用程序可能存在兼容性问题,因此值得仔细检查。
HTTP/2 的:要在 Nginx 中启用 HTTP/2 支持,您需要在编译 Nginx 时包含 ngx_http_v2_module 模块。完成后,您可以使用 listen 指令并添加 http2 参数 [6] 来配置 HTTP/2。
1 gzip on;
2 gzip_types text/plain text/css application/javascript application/json application/xml+rss;
3 gzip_comp_level 6;
1 brotli on;
2 brotli_types text/plain text/css application/javascript application/json application/xml+rss;
3 brotli_comp_level 6;
1 gzip on;
2 gzip_types text/plain text/css application/javascript application/json application/xml+rss;
3 gzip_comp_level 6;
4 brotli on;
5 brotli_types $gzip_types;
6 brotli_comp_level 6;
7 brotli_static on;
1 listen 443 ssl http2;
1 listen 443 ssl http3;