Nginx vhost 多域名指定TLS版本——配置ssl_protocol 踩坑记录

最近对公司要求网站停止支持不安全的TLS1.0/TLS1.1协议,在网上搜索了一会,nginx中相关配置指令是ssl_protocols,但是我在自己负责的server中使用该指令却始终无法生效,于是摸索并记录了这个问题。

当前nginx中存在多个server

bash 复制代码
http {
  #01 
  server {...}
  #02
  server {...}
  #myserver 
  server {...}
}

我在myserver中配置了ssl_protocols却始终无法生效,于是查询了nginx的文档

nginx文档中对ssl_protocols指令的描述:

If the directive is specified on the [server] level, the value from the default server can be used.

简单来说,如果在server块中使用ssl_protocols ,那么该指令会直接使用默认服务器的值(即使默认服务没有显式指定一个值),而非当前server块中指定的值 。 而nginx未使用default_server 指定默认服务器时,会将第一个server 作为默认服务器。 故只需要在第一个server块或者default_server块中,使用ssl_protocols即可

也可以直接在http块中指定:

ini 复制代码
http {
#...
        # 指定支持的 SSL/TLS 协议版本
        ssl_protocols TLSv1.2;
#...
}

需要注意的是,如果在default_server中或者第一个server块中指定了ssl_protocols,那么会覆盖http中指定的ssl_protocols设置。

下面是显式指定默认服务器的配置

ini 复制代码
    server {
        listen 443 ssl default_server;
        server_name _;
#...
        ssl on;
        ssl_certificate /usr/local/nginx/conf/vhosts/certs/your.domain.pem;
        ssl_certificate_key /usr/local/nginx/conf/vhosts/certs/your.domain.key;
        # 指定支持的 SSL/TLS 协议版本
        ssl_protocols TLSv1.2;
#...
        return 403;
    }
相关推荐
高木木的博客4 小时前
数字架构智能化测试平台(1)--总纲
人工智能·python·nginx·架构
徐子元竟然被占了!!5 小时前
Nginx
运维·nginx
图图玩ai6 小时前
SSH 命令管理工具怎么选?从命令收藏到批量执行一次讲清
linux·nginx·docker·ai·程序员·ssh·可视化·gmssh·批量命令执行
CXH7287 小时前
nginx——https
运维·nginx·https
Lentou9 小时前
nginx反向代理
运维·nginx
遇见火星9 小时前
linux设置开启启动服务
linux·运维·服务器·nginx
咸鱼翻身小阿橙10 小时前
QT P4
数据库·qt·nginx
o丁二黄o12 小时前
若依部署Nginx和Tomcat
运维·nginx·tomcat
一个public的class13 小时前
前后端 + Nginx + Gateway + K8s 全链路架构图解
前端·后端·nginx·kubernetes·gateway
bukeyiwanshui13 小时前
20260420 Nginx 服务器
运维·服务器·nginx