理论上满足 Nginx ≥ 1.13.0 且正确配置ssl_protocols参数即可启用。但在实际部署过程中发现,即使版本与配置均符合要求,客户端仍可能返回协议不支持错误。
经过我的查询与验证,发现根本问题在于:当多个虚拟主机共享同一监听端口时,Nginx 要求所有站点的 ssl_protocols 配置必须显式包含 TLS 1.3。
根据上述发现的问题,我作出以下修改:
- 将 SSL 相关参数提升至 http 块进行统一管理,同时解决配置碎片化问题 
http {
    ......
    # 可以根据自己服务器的会话数量自行调整
    ssl_session_cache         shared:SSL:1m;
    ssl_session_timeout       5m;
    # nginx的默认值
	ssl_protocols             TLSv1.2 TLSv1.3;
    # nginx的默认值, 仅支持配置TLSv1.2, TLSv1.3通过ssl_conf_command来配置
	ssl_ciphers               HIGH:!aNULL:!MD5;
	ssl_prefer_server_ciphers on;
    ......
}2.server块中只需证书相关的配置
server {
	listen       443 ssl;
	server_name  your.domain;
    ......
	# ssl证书地址
	ssl_certificate     xxx.pem;
	ssl_certificate_key xxx.pem;
    ......
}