最近发现nginx升级到1.24.0之后遇到警告:nginx: [warn] protocol options redefined for 0.0.0.0:443
📋 问题分析
查阅官方更新发现:http://nginx.org/en/CHANGES-1.24
意思是:
现在默认启用 TLSv1.3 协议。
如果重新定义侦听套接字的协议参数,nginx会发出警告。
✅ 解决办法
所有443端口都要一致配置,以下为例,都要同样配置:
- 端口处配置 ssl http2
- 协议处加上 TLSv1.3
配置示例1
server {
listen 80 default_server;
listen [::]:80 default_server;
listen 443 default_server ssl http2;
listen [::]:443 default_server ssl http2;
server_name _;
set $empty "";
ssl_ciphers aNULL;
ssl_certificate data:$empty;
ssl_certificate_key data:$empty;
return 444;
}
配置示例2
listen 443 ssl http2;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
🔑 关键要点
- 确保所有443端口的配置保持一致
- 在ssl_protocols中明确包含TLSv1.3
- 避免在不同server块中重复定义不同的协议选项
这样配置后,警告信息就会消失,nginx可以正常运行。