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

Nginx 配置 HTTPS 实战:前端与后端集成指南

介绍如何在 Nginx 上配置 HTTPS 以支持前后端分离架构。主要步骤包括域名解析、端口开放、证书申请与安装、Nginx 配置文件修改以及 HTTP 到 HTTPS 的重定向。通过合理配置 SSL 证书和反向代理规则,确保前端静态资源与后端 API 均通过加密通道传输,同时解决 Vue history 路由刷新 404 等常见问题。

猫巷少女发布于 2026/4/5更新于 2026/7/1656 浏览
Nginx 配置 HTTPS 实战:前端与后端集成指南

为你的项目配置 HTTPS

在开始之前,先建立一个心智模型,理解配置 HTTPS 的整体流程:

浏览器 → 域名 → Nginx(443) →

  • 前端静态文件(Vue/Vite 打包后的 dist)
  • 后端 API(反向代理到 Go/Gin)

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

总体概念

本质步骤如下:

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

用户访问流程:

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

我的建议

对于新手而言,推荐处理方式:

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

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

前期准备

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

你要确认:

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

在云服务商控制台 → 云服务器 ECS → 实例 → 点进你的服务器实例查看。

2、解析

你需要拥有一个自己的域名,并认证过。在云服务商控制台 → 域名服务 → 点击解析,添加记录使这个域名指向你的公网 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.com.pem
/etc/nginx/ssl/your-domain.com.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.com.pem;
    ssl_certificate_key /etc/nginx/ssl/your-domain.com.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. 确认证书已经上传到服务器

第二轮

  1. 修改 Nginx 配置
  2. 配置 ssl_certificate 和 ssl_certificate_key
  3. 执行 sudo nginx -t
  4. 执行 sudo systemctl reload nginx

第三轮

  1. 浏览器测试 https://your-domain.com
  2. 检查前端 /api 请求
  3. 排查是否还有 Mixed Content

目录

  1. 为你的项目配置 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. 1、证书文件路径写错
  23. 2、文件权限不对
  24. 3、443 端口没放行
  25. 4、域名没解析好
  26. 5、Vue history 路由没配 try_files
  27. 回顾
  28. 第一轮
  29. 第二轮
  30. 第三轮
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 网络运维与网络安全运维的区别及就业前景分析
  • Clerk 现代 Web 应用用户认证集成指南
  • 基于 Hugging Face 与 TRL 微调大语言模型实战
  • 构建简易引擎进阶篇:平面反射技术实现
  • NIC400 生成流程全解析(八)微架构设计
  • 文心大模型 4.5 开源部署指南:架构解析与实战落地
  • 主流无人机厂商 Remote ID 支持情况汇总
  • Java 异常处理机制:try-catch 用法与体系结构
  • OpenClaw 安装与飞书机器人配置实战指南
  • Serper (Google Search API) 深度解析与实战
  • ChatGPT-4o 在数学建模、AI 绘画、海报设计与论文优化中的应用
  • 飞算 JavaAI 智能编程助手功能介绍
  • Node.js 安装教程与环境变量配置
  • 城市交通监控视频解析:GLM-4.6V-Flash-WEB 辅助违章事件识别
  • 无人机智能航线规划系统构建指南
  • 飞书机器人集成 HunyuanOCR 实现群聊图片自动识别
  • 30+ 大语言模型(LLM)面试问题及答案详解
  • MixAIHub 提供 ChatGPT Claude Sora 等 AI 官网镜像服务
  • 基于 SpringBoot2+Vue3 的师生共评作业管理系统
  • C++ 构造函数初始化列表详解

相关免费在线工具

  • Base64 字符串编码/解码

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

  • Base64 文件转换器

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

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online