直接在Nginx HTTPS server块中启用$ssl_protocol变量写入日志即可,无需额外模块;需配置listen 443 ssl、在http块定义含$ssl_protocol的日志格式、将access_log置于HTTPS server块内,并确保Nginx终止SSL连接且客户端访问https地址。

直接在 Nginx 的 HTTPS server 块中启用 $ssl_protocol 变量写入日志即可,无需额外模块或编译——只要 Nginx 启用了 SSL 模块(默认已包含),且配置了 listen 443 ssl,该变量就能准确记录每次连接实际协商的 TLS 版本,如 TLSv1.2 或 TLSv1.3。
定义含 TLS 版本的日志格式
在 http{} 块内添加或修改 log_format,加入 $ssl_protocol:
log_format ssl_ver '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" '
'$ssl_protocol $request_time';仅对 HTTPS 请求启用该日志
把 access_log 指令放在 listen 443 ssl 的 server{} 块里,不能写在 http 块或 HTTP 的 server 块中:
server {
listen 443 ssl;
server_name example.com;
# 其他 SSL 配置(证书、协议等)
access_log /var/log/nginx/ssl-version.log ssl_ver;
}确保变量能取到值的关键前提
- 必须使用
listen 443 ssl;(漏掉ssl关键字则$ssl_protocol恒为空) - Nginx 必须终止 SSL 连接(即不是透传 HTTPS 到后端,而是自己加载证书并完成握手)
- 客户端真实发起 HTTPS 请求(访问
https://地址,而非http://)
验证是否生效
- 执行
nginx -t检查语法,再nginx -s reload - 用
curl -k https://your-domain.com触发一次请求 - 查看
/var/log/nginx/ssl-version.log,末尾应出现类似TLSv1.3或TLSv1.2的字段
不复杂但容易忽略。


















