Caddy forwards /wizard/api/* and /wizard/website/* with the prefix stripped, so the server received /ws instead of /api/ws and the website connected to /api/ws on the domain root. - Server routes are now /ws and /health (was /api/ws, /api/health) - Website derives the websocket URL from its own location (../api/ws), giving /wizard/api/ws in production and /api/ws in development - Vite dev proxy strips /api like the production proxy - nginx back to the plain SPA config since Caddy strips the prefix - /internal/ai rejects requests that came through the reverse proxy, in addition to the shared secret - Docs updated for the prefixed deployment Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
21 lines
623 B
TypeScript
21 lines
623 B
TypeScript
import react from '@vitejs/plugin-react'
|
|
import { defineConfig } from 'vite'
|
|
|
|
// https://vite.dev/config/
|
|
export default defineConfig({
|
|
plugins: [react()],
|
|
// Relative asset URLs, so the app works under any path prefix (e.g. /website/).
|
|
base: './',
|
|
server: {
|
|
// Forward API requests (including the websocket) to a locally running game
|
|
// server, stripping the prefix like the production reverse proxy does.
|
|
proxy: {
|
|
'/api': {
|
|
target: process.env.WIZARD_SERVER_URL ?? 'http://localhost:8000',
|
|
ws: true,
|
|
rewrite: (path) => path.replace(/^\/api/, ''),
|
|
},
|
|
},
|
|
},
|
|
})
|