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;
    }
相关推荐
叶北辰CHINA3 小时前
nginx反向代理,负载均衡,HTTP配置简述(说人话)
linux·运维·nginx·http·云原生·https·负载均衡
Lansonli5 小时前
云原生(四十八) | Nginx软件安装部署
nginx·云原生·ecs服务器
加油,旭杏11 小时前
【中间件学习】fastCG介绍和使用
学习·nginx·fastcgi
苹果醋314 小时前
大模型实战--FastChat一行代码实现部署和各个组件详解
java·运维·spring boot·mysql·nginx
tanxiaomi21 小时前
vue 不是spa 单页面应用吗? 配置路由工作模式为history 后 ,为什么配置Nginx的 try_files 可以根据url 找到对应的文件?
前端·vue.js·nginx
twins35201 天前
配置Nginx以支持通过HTTPS回源到CDN
网络·nginx·https
astuv1 天前
在树莓派上部署开源监控系统 ZoneMinder
linux·nginx·树莓派·监控·摄像头·zoneminder·apache2
加油,旭杏1 天前
【中间件学习】Nginx快速入门(为了配置一个项目)
学习·nginx·中间件
-XWB-2 天前
【安全漏洞-中间件】nginx版本号屏蔽
运维·nginx·中间件
刘重洋2 天前
解决nginx+tomcat宕机完美解决方案
nginx·tomcat·firefox