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
相关推荐
好学且牛逼的马2 小时前
【工具配置|docker】
运维·docker·容器
文言一心3 小时前
LINUX离线升级 Python 至 3.11.9 操作手册
linux·运维·python
北邮刘老师3 小时前
A3C Network:智能体互联网的层次化视图
运维·服务器·网络
空中楼阁,梦幻泡影4 小时前
LoRA 详细解析,使用LoRA 方式对模型进行微调详细操作指南
运维·服务器·人工智能·机器学习·语言模型
晚风吹长发4 小时前
初步了解Linux中的动静态库及其制作和使用
linux·运维·服务器·数据结构·c++·后端·算法
Le_ee4 小时前
dc4打靶报告
运维·服务器·网络
yeflx5 小时前
解决Ubuntu22.04宿主机docker容器中nvidia-smi偶发失效问题
运维·docker·容器
4t4run5 小时前
28、Linux 系统定时任务
linux·运维·服务器
~黄夫人~5 小时前
Ansible 自动化运维:从 “手动输密码” 到 “一键免密管理”
linux·运维·自动化·ansible
cui__OaO5 小时前
Linux驱动--基于驱动设备分离的按键中断驱动
linux·运维·服务器·嵌入式