nginx 1.20.0 发布

经过一年的发展,高性能HTTP服务器和多协议代理服务器nginx 1.20.0的新稳定分支已经推出,它融合了主分支1.19.x中积累的变化。 未来,稳定分支1.20中的所有变化都将与消除严重错误和漏洞有关。 很快nginx 1.21的主分支将形成,新功能的开发将继续。 对于没有确保与第三方模块兼容的任务的普通用户,建议使用主分支,在此基础上每三个月形成一次商业产品 Nginx Plus 版本。

根据 Netcraft 20.15 月份的报告,nginx 的使用率占所有活跃站点的 19.56%(一年前为 20.73%,两年前为 25.38%),在该类别中受欢迎程度排名第二(Apache 的份额对应于 27.64%) (一年前为 10.09%),Google - 8.51%,Cloudflare - 35.34%。同时,在考虑所有站点时,nginx 保持领先地位并占据 36.91% 的市场份额(一年前为 27.52%,两年前 - 25.98%),而 Apache 的份额为 6.55%,OpenResty(基于 nginx 和 LuaJIT 的平台) - 5.96%,微软 IIS - XNUMX%。

在全球访问量最大的百万个网站中,nginx 的份额为 25.55%(一年前为 25.54%,两年前为 26.22%)。 目前,大约有 419 亿个网站正在运行 Nginx(一年前为 459 亿个)。 根据 W3Techs 的数据,在访问量最大的 33.7 万个网站中,有 31.9% 的网站使用了 nginx,去年 41.8 月这一数字为 39.5%,前一年为 34%(下降的原因是 Cloudflare http 转换为单独核算)服务器)。 Apache 的份额在这一年中从 8.3% 下降到 7%,而 Microsoft IIS 的份额从 6.3% 下降到 8.4%。 LiteSpeed 的份额从 0.8% 增长到 1.2%,Node.js 从 79.1% 增长到 78.9%。 在俄罗斯,XNUMX% 的访问量最大的网站都使用了 nginx(一年前为 XNUMX%)。

1.19.x 上游分支开发过程中添加的最显着的改进:

  • 添加了使用基于 OCSP(在线证书状态协议)协议的外部服务验证客户端证书的功能。 为了启用检查,建议使用 ssl_ocsp 指令来配置缓存大小 - ssl_ocsp_cache,重新定义证书中指定的 OCSP 处理程序的 URL - ssl_ocsp_responder。
  • 包含 ngx_stream_set_module 模块,它允许您为变量 server {listen 12345; 分配一个值; 设置 $true 1; }
  • 添加了 proxy_cookie_flags 指令来指定代理连接中 Cookie 的标志。 例如,要将“httponly”标志添加到 Cookie“one”,并为所有其他 Cookie 添加“nosecure”和“samesite=strict”标志,您可以使用以下结构: proxy_cookie_flags one httponly; proxy_cookie_flags ~ nosecure Samesite=strict;

    ngx_http_userid 模块还实现了类似的 userid_flags 指令,用于向 Cookie 添加标志。

  • 添加了指令“ssl_conf_command”、“proxy_ssl_conf_command”、“grpc_ssl_conf_command”和“uwsgi_ssl_conf_command”,使用它们可以设置用于配置 OpenSSL 的任意参数。 例如,要优先考虑 ChaCha 密码和 TLSv1.3 密码的高级配置,您可以指定 ssl_conf_command Options PrioritizeChaCha; ssl_conf_command 密码套件 TLS_CHACHA20_POLY1305_SHA256;
  • 添加了“ssl_reject_handshake”指令,该指令指示拒绝所有协商 SSL 连接的尝试(例如,可用于拒绝 SNI 字段中主机名未知的所有呼叫)。 服务器 { 监听 443 ssl; ssl_reject_handshake 开启; } 服务器 { 监听 443 ssl; 服务器名称 example.com; ssl_证书 example.com.crt; ssl_certificate_key example.com.key; }
  • proxy_smtp_auth 指令已添加到邮件代理中,允许您使用 AUTH 命令和 PLAIN SASL 机制对后端的用户进行身份验证。
  • 添加了“keepalive_time”指令,该指令限制每个保持活动连接的总生命周期,之后连接将被关闭(不要与 keepalive_timeout 混淆,它定义了保持活动连接关闭之前的不活动时间)。
  • 添加了 $connection_time 变量,通过它您可以获取有关连接持续时间的信息(以秒为单位,精度为毫秒)。
  • “proxy_cache_path”、“fastcgi_cache_path”、“scgi_cache_path”和“uwsgi_cache_path”指令中添加了“min_free”参数,该参数根据确定可用磁盘空间的最小大小来调节缓存大小。
  • “lingering_close”、“lingering_time”和“lingering_timeout”指令已适应 HTTP/2。
  • HTTP/2 中的连接处理代码与 HTTP/1.x 实现接近。 对单独设置“http2_recv_timeout”、“http2_idle_timeout”和“http2_max_requests”的支持已停止,取而代之的是通用指令“keepalive_timeout”和“keepalive_requests”。 设置“http2_max_field_size”和“http2_max_header_size”已被删除,应使用“large_client_header_buffers”代替。
  • 添加了新的命令行选项“-e”,它允许您指定用于写入错误日志的替代文件,该文件将用来代替设置中指定的日志。 您可以指定特殊值 stderr,而不是文件名。

来源: opennet.ru

添加评论