Nginx https证书配置

准备证书文件

准备.crt和.key文件,上传到服务器。可以上传zip包,然后unzip cert.zip -d /opt解压至目标目录。

进入Nginx容器内配置证书

将证书拷贝到容器内

使用docker cp命令将证书复制到容器内

ini 复制代码
docker cp [本地路径] [容器名/容器ID]:[容器内目标路径]

如:docker cp /opt/cert/ my-nginx:/etc/nginx/cert/

容器的名字和id可以通过docker container ps查看,如果容器已经停止,可以增加参数-a。

配置nginx配置文件

ini 复制代码
 server {
    listen 443;
    server_name www.trustauth.cn;   #证书绑定的网站域名
    ssl on;
    ssl_certificate  cert/www.trustauth.cn_chain.crt;  #证书公钥
    ssl_certificate_key cert/www.trustauth.cn.key;    #证书私钥
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!3DES:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
        root html; #站点目录
        index index.html index.htm;
    }
}

可以使用nginx -t检查配置是否正确,如果一切顺利,可以nginx -s reload重启服务。

常见错误

ssl配置错误

ssl配置报错unknown directive "ssl":

确认 Nginx 是否缺少 SSL 模块

首先通过 Nginx 内置命令,查看已编译的模块列表,判断是否缺少 ssl_module:

bash 复制代码
# 查看 Nginx 已编译模块(关键看是否有 --with-http_ssl_module)
nginx -V  # 注意是大写 V,小写 v 只显示版本号

若输出中包含 --with-http_ssl_module:说明已启用 SSL 模块,问题可能是配置文件语法错误。

修改ssl配置语法

如果nginx版本>1.15,不需要使用ssl指令:

diff 复制代码
- listen 443;
- ssl on
+ listen 443 ssl

无法访问443端口

nginx能正常启动,80端口能访问,443无法访问,可能原因有:

  1. 容器未开放443端口
  2. 主机安全组策略未开放443端口

项目内部分链接失效

浏览器限制https网页无法请求http资源,需要检查全部请求连接,是否有指向http的

docker-compose挂载卷

进入容器内配置证书,在容器重建(重启restart不影响)后会恢复原样,可以使用卷挂载这些配置

bash 复制代码
docker run -d \
  --name my-nginx \
  -p 80:80 \  # HTTP 端口映射
  -p 443:443 \  # HTTPS 端口映射(关键)
  -v /宿主机/nginx/conf:/etc/nginx/conf.d \  # 挂载配置目录
  -v /宿主机/nginx/ssl:/etc/nginx/ssl \  # 挂载 SSL 证书
  nginx

也可以在docker-compose文件中增加配置

bash 复制代码
services:
  nginx:
    image: nginx
    ports:
      - "80:80"
      - "443:443"  # 新增/确认这一行
    volumes:
      - ./conf:/etc/nginx/conf.d
      - ./ssl:/etc/nginx/ssl
相关推荐
云上先途17 分钟前
企业 AI 服务部署周期多久,会不会影响原有业务运转?
大数据·运维·人工智能
执伞人ONLY1 小时前
AI知识库自动化知识加工没做对,人工整理永远追不上知识产生
运维·人工智能·自动化
叼烟扛炮1 小时前
Linux 学习笔记(三十三):线程互斥——互斥锁(Mutex)与死锁
linux·运维·服务器·笔记·学习·1024程序员节
无足鸟ICT1 小时前
【RHCA+】who命令(查看已登陆用户)
linux·运维·服务器
RacentCLM2 小时前
证书即服务CaaS:从申请、续期到部署的自动化链路拆解
运维·数据库·自动化·ssl
注塑机数据采集联网2 小时前
注塑机生产管控MES系统应用
大数据·运维·服务器·人工智能·物联网
海宇服务3 小时前
零信任架构实战:基于海宇全国车辆配置查验构建自动化二手商用车出厂参数建档网关
运维·人工智能·架构·自动化·1024程序员节
Brilliantwxx4 小时前
【Linux】 文件访问与路径解析:目录、文件名、dentry、路径缓冲与 dcache 全解析
linux·运维·服务器·开发语言·spring
见闻小天地4 小时前
新手入门:印刷包装设备的伺服和PLC运动控制方案各管什么?七步选型讲清楚
运维·网络·数据库·人工智能
csdn_aspnet5 小时前
Docker Prune:完整指南与上手示例
运维·docker·容器·prune