$ssl_protocol

$ssl_protocol 包含用于连接的 SSL/TLS 协议版本。 — NGINX Core (HTTP)

$ssl_protocol NGINX Core (HTTP)

说明

NGINX 中的 $ssl_protocol 变量会暴露在客户端和服务器之间为安全连接协商的特定 SSL/TLS 协议版本。仅当配置中启用了 SSL 时,此变量才会被设置,并且它反映了运行时当前请求所使用的最新协议版本。它可以返回例如 'TLSv1.2'、'TLSv1.3' 或 'SSLv3' 等值,具体取决于服务器的 SSL 配置中启用的协议。 在使用时,$ssl_protocol 对于在 NGINX 配置中进行记录和条件处理特别有用。例如,管理员可能希望根据所使用协议的安全等级来调整设置。该变量通常在 TLS handshake 过程中被填充,并且像其他 connection-level variables 一样,可在 location 或 server blocks 等不同上下文中访问。这使得基于正在使用的协议版本应用条件逻辑或增强安全措施变得简单。 用户应当理解,不同协议值的可用性在很大程度上取决于 server block 中配置的 cipher suites 和协议。如果某个特定协议版本(例如 TLSv1.3)未启用,$ssl_protocol 的值可能会反映服务器和客户端可以协商的下一个可用版本。

配置示例

server {
    listen 443 ssl;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    # Log the SSL protocol used
    access_log /var/log/nginx/ssl_protocol.log 'SSL Protocol: $ssl_protocol';
}

子系统

http

可缓存

上下文

http, server, location, if

确保在服务器配置中启用 SSL;否则,$ssl_protocol 将不会被设置。

检查您的 SSL 设置;如果未协商出合适的协议,$ssl_protocol 可能不会返回预期值。

请记住,协议值取决于服务器能力和客户端请求,这可能会限制预期输出。