NGINX 和 NGINX Plus 提供了许多功能,使其能够处理大多数 SSL/TLS 要求。 它们使用 OpenSSL 和标准处理器芯片的强大功能来提供经济高效的 SSL/TLS 性能。 随着标准处理器芯片的功能不断增强,以及芯片供应商增加加密加速支持,使用标准处理器芯片相对于专用 SSL/TLS 芯片的成本优势也不断扩大。
NGINX 和NGINX Plus使用 SSL/TLS 有三个主要用例。
当 NGINX 用作代理时,它可以卸载后端服务器的 SSL 解密处理。 在代理上进行解密有许多优点:
有关更多详细信息,请参阅 NGINX Plus 管理指南中的NGINX SSL 终止。
有时您可能需要 NGINX 加密发送到后端服务器的流量。 这些请求可以以纯文本或加密流量的形式到达 NGINX 服务器,NGINX 必须解密才能做出路由决策。 使用与后端服务器的保持连接池可以最大限度地减少 SSL/TLS 握手的次数,从而最大限度地提高 SSL/TLS 性能。 这可以通过将 NGINX 配置为代理“https”来非常简单地实现,这样它就会自动加密尚未加密的流量。
由于 NGINX 可以同时执行解密和加密,因此您可以实现所有请求的端到端加密,而 NGINX 仍会做出第 7 层路由决策。 在这种情况下,客户端通过 HTTPS 与 NGINX 通信,它会解密请求,然后重新加密,然后再将其发送到后端服务器。 当代理服务器没有与后端服务器共置在数据中心时,这可能是可取的。 随着越来越多的服务器被迁移到云端,在代理和后端服务器之间使用 HTTPS 变得越来越必要。
NGINX 可以处理SSL/TLS 客户端证书,并可以配置为可选或必需。 客户端证书是一种将系统访问权限限制为仅限预先批准的客户端而无需密码的方式,您可以通过将吊销的证书添加到证书吊销列表(CRL) 来控制证书,NGINX 会检查该列表以确定客户端证书是否仍然有效。
还有许多其他功能可帮助支持这些用例,包括(但不限于)以下内容:
欲了解更多详细信息,请查看以下资源:
以下是 NGINX 安全功能的一些示例。 这些示例假设您对 NGINX 配置有基本的了解。
以下配置处理www.example.com的 HTTP 流量并将其代理到上游组:
upstream backends {
server 192.168.100.100:80;
server 192.168.100.101:80;
}
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://backends;
}
}
现在添加 HTTPS 支持,以便 NGINX 使用证书和私钥解密流量并通过 HTTP 与后端服务器通信:
upstream backends {
server 192.168.100.100:80;
server 192.168.100.101:80;
}
server {
listen 80;
listen 443 ssl; # 'ssl' parameter tells NGINX to decrypt the traffic
server_name www.example.com;
ssl_certificate www.example.com.crt; # The certificate file
ssl_certificate_key www.example.com.key; # The private key file
location / {
proxy_pass http://backends;
}
}
或者,如果您通过 HTTP 接收流量并通过 HTTPS 将其发送到后端服务器:
upstream backends {
server 192.168.100.100:443;
server 192.168.100.101:443;
}
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass https://backends; # 'https' prefix tells NGINX to encrypt the traffic
}
}
“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”