Nginx安装与SSL证书配置保姆级教程:从零搭建 HTTPS

更新时间:2026-02-25 来源:TopSSL技术团队

Nginx 安装与基础网络配置

在部署证书前,需先在操作系统中安装 Nginx 并开放对应的网络端口。

1. 安装 Nginx 服务

在 Linux 系统中(以 Ubuntu/Debian 与 CentOS/RHEL 为例),通过包管理器执行安装:

  • Ubuntu / Debian​:
  • CentOS / RHEL / Rocky Linux​:

安装完成后,启动服务并设置开机自启:

Bash

sudo systemctl start nginx
sudo systemctl enable nginx

2. 开放系统防火墙与安全组端口

HTTPS 协议依赖 80(HTTP)443(HTTPS) 端口,必须确保操作系统防火墙与云厂商安全组均已放行:

  • ​**UFW 防火墙(Ubuntu)**​:
  • ​**Firewalld 防火墙(CentOS)**​:

注意​:如果使用的是阿里云、腾讯云或 AWS 等云服务器,还需登录云控制台,在“安全组”规则中添加允许 80 和 443 端口入站的规则。如果不确定端口连通性,可以使用 SSL证书工具 进行端口与证书链检测。

上传 SSL 证书与私钥文件

通过商业机构签发或获取证书后,通常会拿到一个压缩包,解压后提取适合 Nginx 使用的文件:

  1. 证书文件​:通常为 domain.crtdomain.pemfullchain.pem(需包含完整证书链)。
  2. 私钥文件​:通常为 domain.key

在服务器上创建标准的证书存放目录,并将文件上传至该目录:

Bash

# 创建证书存储目录
sudo mkdir -p /etc/nginx/ssl

# 将文件放入该目录(推荐设置严格文件权限)
sudo chmod 600 /etc/nginx/ssl/domain.key
sudo chmod 644 /etc/nginx/ssl/fullchain.pem

如果不清楚证书与私钥的生成机制,可参考 什么是SSL证书;若在配置过程中提示私钥不匹配,可参考 修复SSL证书错误 进行模数比对排查。

Nginx 站点与 SSL 证书配置

打开或新建站点配置文件(如 /etc/nginx/conf.d/example.com.conf 或主配置文件 /etc/nginx/nginx.conf),填入以下标准配置:

Nginx

# 1. HTTP 80 端口配置:强制 301 重定向到 HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    # 自动重定向所有 HTTP 请求至 HTTPS
    return 301 https://$host$request_uri;
}

# 2. HTTPS 443 端口配置
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.com www.example.com;

    # 网站根目录及默认首页
    root /var/www/html;
    index index.html index.htm;

    # SSL 证书与私钥绝对路径
    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/domain.key;

    # SSL 安全优化配置
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;

    # 加密协议与套件设置(禁用过时的 SSLv3/TLS1.0/TLS1.1)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    # 请求转发与静态资源响应
    location / {
        try_files $uri $uri/ =404;
    }
}

配置完成后,关于如何将站点彻底从不加密状态切换,可查阅 网站从HTTP更改为HTTPS 的完整全站改造指南。

加载配置与部署验证

修改配置文件后,切勿直接重启服务,必须先进行语法校验。

1. 检验配置文件语法

在终端执行命令:

Bash

sudo nginx -t

当控制台返回 syntax is oktest is successful 字样时,说明配置文件无误。

2. 重载 Nginx 服务

语法检查通过后,平滑重载 Nginx 使配置生效:

Bash

sudo nginx -s reload
# 或使用 systemctl
sudo systemctl reload nginx

3. 访问测试

打开浏览器,访问 [https://example.com](https://example.com),确认地址栏出现安全锁图标。

根据具体应用场景,如果在商业采购或个人测试中有不同类型证书的需求,可以参阅 SSL证书选购指南SSL证书类型 进行对比;企业评估采购成本时可参考 SSL证书价格,轻量级项目亦可查看 免费SSL证书是什么 的申请途径。更多关于不同 Web 服务器的完整部署细节,可参考 怎么安装SSL证书


部署 Nginx 并启用 HTTPS,关键在于正确绑定 443 端口、指定匹配的证书与私钥路径,并配置 TLS 协议套件。通过设置 301 重定向可以保障流量全量收敛至安全通道;平滑重载指令则能降低证书更新时的服务中断风险。规范化的文件权限与语法校验是规避线上部署异常的核心技术环节。


相关问题解答

Q:执行 nginx -t 时报错 SSL_CTX_use_PrivateKey_file failed 怎么解决?

A:该报错通常表明配置的证书文件与私钥文件不匹配,或者私钥文件包含了加密密码。请使用 OpenSSL 命令确认证书中的公钥与 .key 文件中的私钥模数(Modulus)MD5 哈希值是否一致。

Q:Nginx 部署后访问页面提示“不安全”或“证书链不完整”是为什么?

A:核心原因是 ssl_certificate 配置项中仅指向了站点单个证书(如 domain.crt),而未将中级 CA 证书合并进来。应使用包含完整证书链的 fullchain.pem 或手动将中级证书内容追加至站点证书文本下方。

Q:配置后浏览器一直显示 502 Bad Gateway 是证书问题吗?

A:不是证书问题。502 错误表示 Nginx 作为反向代理时,无法连接到后端应用服务器(如 Node.js、Java Tomcat、Python Gunicorn 等)。需检查后端服务状态及 Nginx 配置中的 proxy_pass 目标端口是否正常运行。

立即探索,帮您快速寻找适合您的SSL数字证书 申请SSL证书
免费SSL证书 - SSL证书申请与HTTPS安全服务平台 | TopSSL
提供免费与付费SSL证书申请
关注 TopSSL 公众号, RSS订阅SSL资讯与技术支持

TopSSL是一站式SSL证书服务平台,提供免费SSL证书申请、商业SSL证书服务及HTTPS安全解决方案,支持DV、OV、EV、通配符和国密SSL证书服务。2004-2026 © 北京传诚信  版权所有 |  北京市朝阳区鹏景阁大厦16层

技术协助:wo@topssl.cn 企业咨询:vip@topssl.cn