跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScript大前端

Nginx 配置 HTTPS 实战:前后端集成方案

Nginx 配置 HTTPS 涉及域名解析、端口开放、证书申请及服务器配置。核心步骤包括将 HTTP 重定向至 HTTPS,在 server 块中启用 SSL 并指定证书路径,同时配置反向代理转发 API 请求至后端服务。常见错误包含证书路径错误、权限不足、端口未放行及前端路由配置缺失。通过合理设置 try_files 可解决 Vue History 模式刷新 404 问题,确保前后端统一通过加密连接通信。

ByteFlow发布于 2026/4/10更新于 2026/6/1222 浏览
Nginx 配置 HTTPS 实战:前后端集成方案

Nginx 配置 HTTPS 实战:前后端集成方案

总体概念

配置 HTTPS 的本质流程包含以下 5 步:

  1. 域名解析到你的服务器
  2. 服务器开放 80 和 443 端口
  3. 申请一张证书
  4. Nginx 配置 443 + 证书
  5. 把 80 跳转到 443

用户访问流程如下:

  • http://your-domain.com → 自动跳转至 https://your-domain.com
  • Nginx 使用证书与浏览器建立加密连接
  • 前端页面通过 HTTPS 打开
  • /api 请求由 Nginx 转发到后端服务

Nginx 官方对 HTTPS 的最基本要求是:在 server 块里使用 listen 443 ssl;,并指定 ssl_certificate 和 ssl_certificate_key。

我的建议

对于新手而言,推荐采用以下架构:

  • Nginx 负责 HTTPS
  • 后端项目继续跑 HTTP 内部端口,例如 127.0.0.1:8080
  • Vue 前端走同域名 /api
  • 不要让后端项目自己配证书

原因很简单:证书只维护在 Nginx,既可以只配置一处,也最容易排错。

前期准备

第 1 步:确认你的域名已经指向这台服务器

你需要确认:

  • 你的域名 A 记录已经解析到服务器公网 IP
  • 以后访问的网站是这个域名,不是裸 IP
1、获取你的公网 IP

在云平台控制台 → 云服务器 ECS → 实例 → 查看你的服务器实例信息。

2、解析

你需要拥有一个自己的域名。在云平台控制台 → 域名服务 → 点击解析,添加一条 A 记录,将域名指向你的公网 IP。

提醒:HTTPS 证书是给域名用的,不是给裸 IP 用的。如果你用浏览器直接访问 https://你的公网 IP,大概率会提示证书不匹配。

第 2 步:开放 80 和 443 端口

你要确保:

  • 服务器安全组放行 80/tcp
  • 服务器安全组放行 443/tcp
  • 服务器本机防火墙没有拦截

第 3 步:先确认当前 Nginx 和后端项目是怎么跑的

核对以下几点:

前端

Vue/Vite 是否已经打包过,例如:

npm run build

然后 Nginx 是否已经在提供 dist/ 目录。

后端

Gin 是否监听一个端口,比如:

r.Run("127.0.0.1:8080")
API 请求地址

前端有没有写死这种地址:

http://your-domain.com/api

或者:

http://your-ip:8080

如果有,后面必须改。因为页面走 HTTPS 时,请求 HTTP API 会被浏览器拦截。

第 4 步:申请证书

一般购买域名时会赠送证书。进入证书管理中心下载证书即可。

具体落地方式

假设你已经拿到证书了,接下来要做的是:

  1. 从证书管理页面下载证书
  2. 上传到服务器
  3. 手动配置 Nginx 的 443
  4. 让 HTTP 跳转到 HTTPS

第 5 步:先把 Nginx 的 HTTP 站点跑通

先确保你现在这个配置能正常访问:

server {
    listen 80;
    server_name your-domain.com www.your-domain.com;
    root /www/your-project/dist;
    index index.html;
    location / {
        try_files $uri $uri/ /index.html;
    }
    location /api/ {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

说明:

  • root 指向 Vue/Vite 打包后的 dist
  • try_files ... /index.html 是给 Vue history 路由兜底
  • /api/ 反向代理到 Gin

这一步的目标不是 HTTPS,而是先确认:

  • 域名解析正常
  • 80 端口已放行
  • Nginx 站点能正常打开

第 6 步:从证书中心下载证书并上传到服务器

1、在证书管理页面下载证书

进入证书管理页,找到你的证书,下载时优先选择 Nginx 格式。

解压后通常你会拿到两类文件:

  • 证书文件:.pem 或 .crt
  • 私钥文件:.key
2、上传到服务器

建议把证书放到类似目录:

/etc/nginx/ssl/

例如:

/etc/nginx/ssl/your-domain.pem
/etc/nginx/ssl/your-domain.key

如果目录不存在,可以先创建:

sudo mkdir -p /etc/nginx/ssl

然后把证书和私钥上传进去。

第 7 步:手动配置 Nginx 的 HTTPS

可以把 Nginx 配置改成这样:

server {
    listen 80;
    server_name your-domain.com www.your-domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name your-domain.com www.your-domain.com;
    ssl_certificate /etc/nginx/ssl/your-domain.pem;
    ssl_certificate_key /etc/nginx/ssl/your-domain.key;
    root /www/your-project/dist;
    index index.html;
    location / {
        try_files $uri $uri/ /index.html;
    }
    location /api/ {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
    }
}

说明:

  • 第一个 server 负责把 HTTP 自动跳转到 HTTPS
  • 第二个 server 负责真正提供 HTTPS 服务
  • ssl_certificate 指向你的证书文件
  • ssl_certificate_key 指向你的私钥文件

第 8 步:检查配置并重载 Nginx

每次改完配置后,都先检查语法:

sudo nginx -t

如果输出类似:

syntax is ok
test is successful

再执行:

sudo systemctl reload nginx

如果你系统里没有 systemctl,也可能需要:

sudo service nginx reload

需要避免的坑

  1. 证书文件路径写错 ssl_certificate 和 ssl_certificate_key 指向的路径必须真实存在。

  2. 文件权限不对 Nginx 进程需要有权限读取证书和私钥。

  3. 443 端口没放行 即使 Nginx 配好了,如果服务器安全组或系统防火墙没放 443,也无法访问 HTTPS。

  4. 域名没解析好 如果域名没正确解析到你的服务器公网 IP,HTTPS 也不会正常工作。

  5. Vue history 路由没配 try_files 这样刷新页面时可能会返回 404。

实施步骤总结

  1. 确认域名已经解析到服务器
  2. 确认 80 和 443 已放行
  3. 确认 http://your-domain.com 可以访问
  4. 确认证书已经从证书中心下载下来
  5. 确认证书已经上传到服务器
  6. 修改 Nginx 配置
  7. 配置 ssl_certificate 和 ssl_certificate_key
  8. 执行 sudo nginx -t
  9. 执行 sudo systemctl reload nginx
  10. 浏览器测试 https://your-domain.com
  11. 检查前端 /api 请求
  12. 排查是否还有 Mixed Content

目录

  1. Nginx 配置 HTTPS 实战:前后端集成方案
  2. 总体概念
  3. 我的建议
  4. 前期准备
  5. 第 1 步:确认你的域名已经指向这台服务器
  6. 1、获取你的公网 IP
  7. 2、解析
  8. 第 2 步:开放 80 和 443 端口
  9. 第 3 步:先确认当前 Nginx 和后端项目是怎么跑的
  10. 前端
  11. 后端
  12. API 请求地址
  13. 第 4 步:申请证书
  14. 具体落地方式
  15. 第 5 步:先把 Nginx 的 HTTP 站点跑通
  16. 第 6 步:从证书中心下载证书并上传到服务器
  17. 1、在证书管理页面下载证书
  18. 2、上传到服务器
  19. 第 7 步:手动配置 Nginx 的 HTTPS
  20. 第 8 步:检查配置并重载 Nginx
  21. 需要避免的坑
  22. 实施步骤总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • ESLint 实战指南:从原理到 TypeScript 工程化配置
  • 如何在 Cursor 中使用 MCP 服务
  • Java 校园服装租赁系统设计与实现
  • 基于 SpringBoot 与 Vue 的博物馆藏品数字化管理系统设计与实现
  • SkyWalking Kafka 与 RabbitMQ 消息链路追踪实战
  • Windows 10/11 下 WSL2 安装 Ubuntu 20.04 及 D 盘迁移指南
  • YOLOv8 模型移植到高通机器人 RB5 平台指南
  • AI 在前后端开发中的差异化落地:从 MVP 到高并发
  • 吴恩达机器学习:逻辑回归算法详解
  • 码云新增 PR 显示权限,助力计算机教学
  • Discord 机器人创建流程详解
  • DeepSeek 与通义万相结合制作 AI 视频实战详解
  • 基于 RAG 技术的商品智能搜索高效解决方案
  • Neo4j 5.26 版本下载安装配置步骤
  • 滑动窗口算法进阶:最大连续 1 与最小操作数
  • Linux 信号保存与递达机制详解
  • Unitree Go2 机器人 ROS2 开发实战:从零搭建仿真环境
  • Android 手机本地运行 Stable Diffusion 开源方案
  • Spring Boot 集成数据仓库与 ETL 工具实战
  • 千笔 AI 学术写作辅助工具核心功能解析

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online