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
相关推荐
特长腿特长3 小时前
centos、ubantu系列机的用户和用户组的结构是什么?具体怎么配置?用户组权限怎么使用?这篇文章持续更新,帮助你复习linux的基础知识
linux·运维·centos
zzzyyy5383 小时前
Linux环境变量
linux·运维·服务器
赛博云推-Twitter热门霸屏工具4 小时前
Twitter运营完整流程:从0到引流获客全流程拆解(2026)
运维·安全·自动化·媒体·twitter
CHHC18804 小时前
NetCore树莓派桌面应用程序
linux·运维·服务器
帮我吧智能服务平台5 小时前
装备制造智能制造升级:远程运维与智能服务如何保障产线OEE
运维·服务器·制造
w6100104665 小时前
cka-2026-cri-dockerd
运维·k8s·cka
卤炖阑尾炎6 小时前
PostgreSQL 日常运维全指南:从基础操作到备份恢复
运维·数据库·postgresql
handsomestWei7 小时前
Docker引擎API接入配置
运维·http·docker·容器·api
Tingjct7 小时前
Linux常用指令
linux·运维·服务器
daad7777 小时前
wifi_note
运维·服务器·数据库