40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { defineConfig, type ProxyOptions } from "vite";
|
||
import react from "@vitejs/plugin-react";
|
||
|
||
const proxy = {
|
||
// Live API -> gateway
|
||
"/api": {
|
||
target: "http://127.0.0.1:8888",
|
||
changeOrigin: true,
|
||
configure: (gateway) => {
|
||
// Browser -> Vite is same-origin. Do not forward that Origin to the
|
||
// private gateway, where it would be mistaken for a direct CORS call.
|
||
gateway.on("proxyReq", (request) => request.removeHeader("origin"));
|
||
},
|
||
},
|
||
// 頭像等公開物件(MinIO path-style)。nginx 未轉 /haixun-assets 時,
|
||
// 流量會落到 Vite;由此代轉,避免回 SPA HTML。
|
||
"/haixun-assets": {
|
||
target: "http://127.0.0.1:9000",
|
||
changeOrigin: true,
|
||
},
|
||
} satisfies Record<string, string | ProxyOptions>;
|
||
|
||
// https://vite.dev/config/
|
||
export default defineConfig({
|
||
plugins: [react()],
|
||
server: {
|
||
host: "0.0.0.0",
|
||
port: 5173,
|
||
strictPort: false,
|
||
allowedHosts: ["threads-tool-dev.30cm.net", ".30cm.net"],
|
||
proxy,
|
||
},
|
||
preview: {
|
||
host: "0.0.0.0",
|
||
port: 4173,
|
||
allowedHosts: ["threads-tool-dev.30cm.net", ".30cm.net"],
|
||
proxy,
|
||
},
|
||
});
|