建议升级到NGINX主线版本1.21.x

2021年5月份发布的NGINX1.21.0,正式替代NGINX1.20.x版本成为新主线版本,截止至发文时间,最新版为1.21.1,相较于旧版本功能与效率提升较大,且修复了大量BUG。

NGINX 1.21.1 主线版本,带有来自 Google 的 brotli 压缩库、TLS 1.3 Final (RFC 8446)、http2 (HTTP/2)、ngx 缓存清除和ngx http geoip2 模块支持。SSL 是针对添加到CentOS/RHEL 存储库的OpenSSL 1.1.1k 动态构建的。请注意,TLS 1.3需要新版Edge、Chrome 70+ 和 Mozilla Firefox 63+才支持。

NGINX 1.21.1完整更新日志:

  • 更改:现在 nginx 总是为 CONNECT 方法返回错误。
  • 更改:现在 nginx 总是返回一个错误,如果两者都是“Content-Length”和“传输编码”标题行出现在请求中。
  • 更改:现在如果空格或控件,nginx 总是返回错误:请求行中使用字符。
  • 更改:现在如果空格或控件,nginx 总是返回错误:在标题名称中使用字符。
  • 更改:现在如果空格或控件,nginx 总是返回错误:“主机”请求标头行中使用了字符。
  • 更改:使用多时优化配置测试:监听套接字。
  • 修正:nginx 没有转义 “””, “<“, “>”, “\”, “^”, “`”, “{“, “|”, 和“}”字符代理时更改的 URI。
  • 修正:SSL 变量在日志中使用时可能为空;该错误有出现在 1.19.5。
  • 修正:与 gRPC 后端的保持连接可能不会关闭收到 GOAWAY 帧后。
  • 修正:减少长期请求的内存消耗:使用超过 64 个缓冲区进行代理。
  • 安全性:DNS 服务器期间可能会发生 1 字节内存覆盖
  • 如果使用了“resolver”指令,则响应处理,允许能够伪造来自 DNS 服务器的 UDP 数据包的攻击者导致工作进程崩溃或可能导致任意代码执行(CVE-2021-23017)。
  • 功能:“proxy_ssl_certificate”中的变量支持,”proxy_ssl_certificate_key” grpc_ssl_certificate”,
    “grpc_ssl_certificate_key”、“uwsgi_ssl_certificate”和“uwsgi_ssl_certificate_key”指令。
  • 特性:邮件代理模块中的“max_errors”指令。
  • 特性:邮件代理模块支持 POP3 和 IMAP 流水线。
  • 特性:“listen”指令中的“fastopen”参数
  • 修正:自动重定向期间特殊字符未转义:带有附加的斜杠。
  • 修正:邮件代理模块中与客户端的连接可能是:使用 SMTP 流水线时意外关闭。
  • 更改:“keepalive_requests”指令的默认值是:更改为 1000。
  • 功能:“keepalive_time”指令。
  • 功能:$connection_time 变量。
  • 解决方法:“gzip 过滤器无法使用预先分配的内存”警报:使用 zlib-ng 时出现在日志中。

要启用 TLS 1.3,必须指定:

ssl_protocols TLSv1.2 TLSv1.3;

TLS 1.3 VS TLS 1.2

TLS 1.3 是时隔九年对 TLS 1.2 等之前版本的新升级,也是迄今为止改动最大的一次。针对目前已知的安全威胁,IETF(Internet Engineering Task Force,互联网工程任务组) 正在制定 TLS 1.3 的新标准,使其有望成为有史以来最安全,但也最复杂的 TLS 协议。

TLS 1.3 与之前的协议有较大差异,主要在于:

  • 相比过去的的版本,引入了新的密钥协商机制 — PSK
  • 支持 0-RTT 数据传输,在建立连接时节省了往返时间
  • 废弃了 3DES、RC4、AES-CBC 等加密组件,废弃了 SHA1、MD5 等哈希算法
  • ServerHello 之后的所有握手消息采取了加密操作,可见明文大大减少
  • 不再允许对加密报文进行压缩、不再允许双方发起重协商
  • DSA 证书不再允许在 TLS 1.3 中使用

对比旧协议中的不足,TLS 1.3 确实可以称得上是向前迈了一大步。既避免之前版本出现的缺陷,也减少了 TLS 握手的时间。


发表评论