vue3+vite+ts 在nginx上部署前端项目,后端服务器代理地址是两个生产地址,然后实现项目中接口请求通过判断条件请求不同的接口,nginx需要如何配置?以及前端项目还需要如何调整?
时间: 2024-11-30 12:28:50 浏览: 32
Vue3、Vite 和 TypeScript 的前端项目要在 Nginx 上部署,并利用后端服务器的代理功能处理不同环境的接口,你需要做以下几个步骤:
1. **Nginx 配置**:
- 在 Nginx 的 `server` 指令下创建一个新的虚拟主机块,为 Vue3 应用指定一个域名或路径。
```nginx
server {
listen 80; # 或者监听其他端口
server_name yourdomain.com;
location / {
root /path/to/your/vite-build;
proxy_pass http://backend-prod1.example.com; # 如果是第一个生产地址
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-Nginx-Proxy true;
}
location /api { # 如果有 API 接口路径区分
proxy_pass http://backend-prod2.example.com/api;
# ... 其他API相关设置
}
}
```
这里假设 `/api` 是后端提供的公共接口路径,如果需要动态切换,可以在 Vue 中通过环境变量或配置文件设置。
2. **前端调整**:
- 在 Vue3 项目中,你可以使用环境变量如 `process.env.VUE_APP_BACKEND_URL` 来替换硬编码的接口地址。在 `vite.config.ts` 文件中,可以配置环境变量的来源,例如从 `.env` 文件读取:
```javascript
import { defineConfig } from 'vite';
import env from './.env';
export default defineConfig({
resolve: {
alias: {
'@env': path.resolve(__dirname, '.env'),
},
},
build: {
target: 'esnext',
rollupOptions: {
input: 'src/main.ts',
output: {
dir: 'dist',
format: 'iife', // 立即执行函数,便于浏览器直接运行
},
},
},
});
```
- 在 Vue 组件中,可以通过 `import('@env')` 来获取环境变量,然后动态决定使用哪个代理地址。
3. **后端代理设置**:
后端服务需支持这种基于 URL 路径的负载均衡或路由选择。比如,Node.js 中的 Express 可以使用 `express-router` 包配合 middleware 来实现类似功能,或配置反向代理规则。
阅读全文