Vite + Axios + Nginx 环境变量与代理配置笔记

1. 核心概念

配置项 作用 示例值
.env 文件 定义环境变量(如 API 基址) VITE_APP_BASE_API='/pipe-api'
Axios baseURL 请求的公共路径前缀 baseURL: import.meta.env.VITE_APP_BASE_API
Nginx proxy_pass 将请求转发到后端服务器 proxy_pass http://127.0.0.1:8084/pipe-api/;

2. 开发环境( npm run dev )

  • 流程 :
    浏览器 → Vite 开发服务器 → 代理到后端
  • 关键配置:
arduino 复制代码
// vite.config.js
server: {
  proxy: {
    '/pipe-api': {
      target: 'http://127.0.0.1:8084', // 后端地址
      changeOrigin: true,
    },
  },
}
  • 行为:
    • 请求 /pipe-api/user → Vite 代理为 http://127.0.0.1:8084/pipe-api/user。
    • 无需 Nginx,代理由 Vite 本地服务器完成。

3. 生产环境( npm run build + Nginx)

  • 流程 :
    浏览器 → Nginx → 后端服务器
  • 关键配置:
perl 复制代码
location ^~/pipe-api/ {
    proxy_pass http://127.0.0.1:8084/pipe-api/; # 保留路径前缀
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}
  • 行为:
    • 请求 https://你的域名/pipe-api/user → Nginx 转发到 http://127.0.0.1:8084/pipe-api/user。
    • VITE_APP_BASE_API 的值 /pipe-api 会被静态注入到打包后的代码中。

4. 环境变量与路径规则

环境 .env 文件 实际请求路径 代理目标
开发 VITE_APP_BASE_API='/pipe-api' http://localhost:5173/pipe-api/user http://127.0.0.1:8084/pipe-api/user
生产 VITE_APP_BASE_API='/pipe-api' https://域名/pipe-api/user http://127.0.0.1:8084/pipe-api/user

5. 重要注意事项

  1. VITE_ 前缀:
    • 只有以 VITE_ 开头的变量会被注入到前端代码(import.meta.env)。
    • 非 VITE_ 变量仅在 vite.config.js 中可用(如 process.env.SECRET_KEY)。
  1. Nginx 斜杠规则:
    • proxy_pass http://127.0.0.1:8084/pipe-api/;
      → 保留 /pipe-api 前缀(后端需兼容)。
    • proxy_pass http://127.0.0.1:8084/;
      → 删除 /pipe-api 前缀(后端直接接收 /user)。
  1. 生产环境安全:
    • 不要在前端暴露真实 IP 或端口(如 http://1.2.3.4:8084),始终用 Nginx 代理隐藏。

6. 常见问题排查

问题现象 可能原因 解决方案
生产环境 404 Nginx proxy_pass 路径不匹配 检查后端是否需要 /pipe-api 前缀。
开发环境跨域 Vite 代理未生效 确认 vite.config.js 代理配置正确。
变量未替换 变量名未以 VITE_ 开头 修改变量名为 VITE_APP_XXX。

7. 一键配置总结

ini 复制代码
# .env.development
VITE_APP_BASE_API = '/pipe-api'

# .env.production
VITE_APP_BASE_API = '/pipe-api'
php 复制代码
// Axios 配置(通用)
const service = axios.create({
  baseURL: import.meta.env.VITE_APP_BASE_API,
  timeout: 60000,
});
bash 复制代码
# Nginx 生产配置
location ^~/pipe-api/ {
    proxy_pass http://backend-server:8084/pipe-api/;
    proxy_set_header Host $host;
}

8. 流程图解

bash 复制代码
开发环境:
浏览器 → `/pipe-api/user` → Vite 代理 → `http://127.0.0.1:8084/pipe-api/user`

生产环境:
浏览器 → `https://域名/pipe-api/user` → Nginx → `http://127.0.0.1:8084/pipe-api/user`

理解口诀:

  • 开发靠 Vite,生产靠 Nginx
  • 路径前缀一致,变量注入要带 `VITE_
  • 斜杠定生死,代理规则要对齐
相关推荐
kyriewen41 分钟前
Skills 榜前 10 我全装了:只有 3 个能直接用
前端·javascript·程序员
IT_陈寒1 小时前
当Java的hashCode遇上Lombok,我的缓存被全清了
前端·人工智能·后端
工控丫丫1 小时前
帆软看板中经常使用的公式函数及经常搭的组合
前端·javascript·数据库
jerrywus2 小时前
我用 GPT-6.1-sol 做了台会讲解的 3D 售货机:60 罐饮料,一口没喝上
前端·agent·claude
孟陬3 小时前
Foobar 技术周刊#159:当看不懂代码时,如何高效排障调试。脏页陷阱:一条只读查询,写入数 TB 数据。推测解码:大模型加速利器
前端·人工智能·后端
Zhao-Jichao3 小时前
AI Prompting for Everyone 课程笔记 - P17 图像生成 Imaging Generation
前端
Highcharts.js4 小时前
智能数据分析组件Orbit 正式发布与快速上手体验教程
前端·人工智能·信息可视化·数据分析系统·highcharts·orbit·智能可视化
Dream-Y.ocean4 小时前
鸿蒙PC平台星图遥感适配实战:基于 Electron 壳方案的纯 JavaScript 遥感图像处理引擎开发
javascript·electron·harmonyos
螺丝钉tina4 小时前
[Playwright ][16]Playwright + TypeScript API 自动化测试实战:API测试
前端·javascript·typescript
小天源5 小时前
智叟云集系统 · 架构与职责分层
服务器·前端·数据库