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;
    }
相关推荐
Lsetea14 小时前
Certbot webroot申请SSL证书总是404:Nginx挑战目录与路径映射检查
运维·nginx·https·ssl证书·certbot
莫晓燚16 小时前
双机部署若依 (RuoYi‑Vue) 传统环境部署---实战
linux·运维·数据库·redis·mysql·nginx·ruoyi
山乐1913119 小时前
麒麟系统,安装Nginx并配置https证书
运维·nginx·https
一直在努力学习的菜鸟21 小时前
阿里云SSL证书到期更换指南(Nginx + Typecho)
nginx
雾时之林1 天前
Nginx反向代理与proxy_cache缓存搭建CDN服务器
服务器·nginx·缓存
Linux_cy1 天前
nginx 502 排查手册:九种原因分类、定位命令与检查顺序
linux·运维·服务器·网络·数据库·nginx·ssh
开源必胜2 天前
Socket、异步非阻塞 I/O 与 NGINX、Netty 模型
网络·tcp/ip·nginx
Jack N3 天前
【Strapi 系列之八】二次开发 + 生产部署,Docker + PostgreSQL + Nginx 一把梭
nginx·docker·postgresql·strapi
闲云自留地4 天前
K8s Ingress 全解:ingress-nginx 部署、域名路径路由、HTTPS 限流灰度一篇通
nginx·https·kubernetes
幽默小吴4 天前
nginx篇
运维·nginx