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;
    }
相关推荐
岚天start4 小时前
云服务器以域名形式访问机房Kubernetes集群服务之解决方案
nginx·docker·kubernetes·kubesphere·解决方案·云服务器·机房
梅孔立4 小时前
CentOS 7 安装 dnsmasq 解决nginx无法指定dns的问题
linux·nginx·centos
angushine1 天前
鲲鹏服务器logstash采集nginx日志
运维·服务器·nginx
会飞的青蛙1 天前
从购买服务器,到Ubuntu + Docker + Jenkins 部署,再到网页展示!
nginx·ci/cd·jenkins
水痕012 天前
nginx一个域名下部署多套前端项目
运维·前端·nginx
就改了2 天前
Nginx 动静分离配置(详细版)
nginx
未来之窗软件服务2 天前
基于 Nginx 与未来之窗防火墙构建下一代自建动态网络防护体系—仙盟创梦IDE
网络·ide·nginx·服务器安全·仙盟创梦ide·东方仙盟
先生沉默先3 天前
Docker常用命令详解:以Nginx为例
nginx·docker
苹果醋33 天前
iview中实现点击表格单元格完成编辑和查看(span和input切换)
运维·vue.js·spring boot·nginx·课程设计
飛_3 天前
【Word Press基础】创建一个动态的自定义区块
运维·nginx·html·word press