NGINX Plus 18版本发布,支持动态证书加载

2019 年 5 月 06 日

NGINX Plus 18版本发布,支持动态证书加载

NGINX已经发布了 NGINX Plus 18 版本(R18),这是它们一体化的负载平衡器、内容缓存和 web 服务器。该版本的特性包括支持动态证书加载、对 OpenID Connect 实现的增强以及为虚拟服务器指定端口范围的能力。


通过支持动态证书加载,SSL/TLS 证书现在可以按需加载,不需要在配置文件中明确地列出。根据 TLS 握手期间由服务器名称指示(Server Name Indication,简称 SNI)提供的主机名,NGINX Plus 现在可以动态地加载正确的证书。这允许在单个服务配置下托管多个安全网站。


在 NGINX Plus 之前的版本中,每个安全主机名都需要在配置文件中有自己的 server 代码块,静态地把证书和私钥指定为磁盘上的文件。这也意味着,当添加新主机名时,都必须重新加载配置。


借助该新功能,现在可以在配置中只有一个 server 块来安全地托管任意数量的站点:


server {   listen 443 ssl;

ssl_certificate /etc/ssl/$ssl_server_name.crt; # Lazy load from SNI ssl_certificate_key /etc/ssl/$ssl_server_name.key; # ditto ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1; ssl_prefer_server_ciphers on;

location / { proxy_set_header Host $host; proxy_pass http://my_backend; }
复制代码


有了这个设置,基于 $ssl_server_name 变量的值,证书能够根据需要从硬盘延迟加载。然后,证书和 key 将会缓存在文件系统缓存的内存中。只要变量的值在 SNI(这是在读取请求行和头信息之前发生的)期间是可用的,那么就可以在那里使用它。


还可以在内存中(在键-值对存储中)存储 SSL/TLS 证书数据,而不是作为文件存在磁盘上。这允许证书通过Plus API以程序的方式进行安装。NGINX 建议 Plus 的整个集群部署都这么操作,因为证书数据将只需要上传一次,就可以自动传播,或者用于自动与证书颁发者(如Hashicorp Vault)集成。


在这两种情况下,在初始证书加载期间都会产生性能损失。证书加载过程只在 TLS 握手期间发生,一旦会话建立,请求处理将正常进行。根据 NGINX 的说法,该损失将造成初始 TLS 握手过程延长 20-30%。


该版本还包括主动健康检查功能的改进。该版本引入了 require 指令,允许测试任何变量的值,包括标准变量和用户定义的变量。match 块中的 require 指令允许检查一个或多个变量必须有非零值才让测试通过。


进一步的健康检查改进包括允许用 proxy_session_drop 指令来终止第4层连接。之前,如果已建立的客户端连接到的服务器不健康,那么,它们可能会遇到超时。这是因为,之前只在新客户端尝试建立连接时才考虑后端服务器的健康状态。新的 proxy_session_drop 指令将允许立即关闭该连接。启用该指令后,还可以通过一个主动健康检查的失败或上游组中服务器的删除(例如,通过 DNS 查找来删除)来触发连接终止。


该版本提供的其他功能包括:


  • 现在,OpenID Connect实现支持不透明会话令牌、刷新令牌和注销URL

  • NGINX Plus服务器现在可以配置为监听指定范围的端口(如80-90)

  • 现在可以用配置中的变量直接创建键-值对


关于该版本中包含的更多细节和其他功能,请参阅 NGINX 博客中的官方声明。NGINX Plus 可以作为 NGINX 应用平台的一部分进行试用


阅读英文原文NGINX Plus Release 18 Available with Support for Dynamic Certificate Loading


2019 年 5 月 06 日 08:004597
用户头像

发布了 199 篇内容, 共 64.2 次阅读, 收获喜欢 270 次。

关注

评论

发布
暂无评论
发现更多内容

IPFS 星际传输协议的入门(二)

AIbot

区块链 分布式数据库

零基础应该如何学习爬虫技术?

极客时间

Python 编程 爬虫

记一次spring注解@Value不生效的深度排查

小楼

spring Spring Boot dubbo

nacos的一致性协议distro介绍

小楼

nacos

Ledge:这可能是距今最好的『DevOps + 研发效能』知识平台

Phodal

DevOps 敏捷开发 软件开发 研发效能

什么是物联网中台

老任物联网杂谈

物联网中台 IOT Platform 物联网平台

当dubbo多注册中心碰上标签路由

小楼

dubbo

LeetCode 前1000题二叉树题目系统总结

Yano

面试 算法 LeetCode 二叉树 刷题

广告与数据算法系列1.1.1: 什么是广告

黄崇远@数据虫巢

互联网 算法 广告

centos7.6操作系统安装

桥哥技术之路

#linux

以为是青铜,没想到是王者的dubbo标签路由

小楼

dubbo

Linux系统优化

桥哥技术之路

#linux

用jdk8的stream实现斐波那契数列

编号94530

jdk stream 斐波那契 fibonacci

C++数组可以为变量吗

this_is_for_u

c++ 互联网 编程语言

一次漫长的dubbo网关内存泄露排查经历

小楼

dubbo 内存泄露

skywalking内存泄露排查

小楼

dubbo 内存泄露

MacOS配置网络命令

编程随想曲

macos network

如何在非 sudo 用户下运行 docker 命令?

愚一

Docker DevOps

要不要重新认识一下递归与迭代?

西了意

编程

格局不行,有机会也抓不住

池建强

创业 格局 MacTalk

SpringBoot中如何优雅的使用多线程

读钓

Java spring Spring Boot

Apache Beam 大数据处理一站式分析

李孟

Java 大数据 数据中台 数据交换 Beam

项目实施要避免哪些坑?

顾强

项目管理

Django 中如何优雅的记录日志

AlwaysBeta

Python django Web 后端

思维导图学《Linux性能优化实战》

Yano

Linux 后端

Sentinel在docker中获取CPU利用率的一个BUG

小楼

Java sentinel cpu

在Kubernetes上运行SpringBoot应用

铁花盆

Docker Kubernetes Spring Boot

MySQL死锁与Spring事务

Dean

MySQL

一个工程师向电信公司的维权

身为程序员,怎么接私活赚外快?

爱看书的小代码

Docker运行常用软件:MySQL,Redis,Nginx,RabbitMQ,Neuxs,Gitlab

读钓

MySQL nginx Docker gitlab

NGINX Plus 18版本发布,支持动态证书加载-InfoQ