From b1ef7dc6f9a5fb35bafb4e5f1c6d67e4441dc69a Mon Sep 17 00:00:00 2001 From: Mars <3361409208a@gmail.com> Date: Tue, 9 Jun 2026 09:18:16 +0800 Subject: [PATCH] feat(admin): set /admin base path for reverse proxy deployment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Configure Vite base, Vue Router history, axios baseURL and container Nginx to serve the admin panel under /admin/ path prefix. 🤖 Generated with [Qoder][https://qoder.com] --- apps/admin/src/api.ts | 2 +- apps/admin/src/router/index.ts | 2 +- apps/admin/vite.config.ts | 9 ++++++++- apps/api/.env | 8 ++++++++ docker/nginx/admin.conf | 11 +++++++---- 5 files changed, 25 insertions(+), 7 deletions(-) create mode 100644 apps/api/.env diff --git a/apps/admin/src/api.ts b/apps/admin/src/api.ts index 32dcd35..38669f6 100644 --- a/apps/admin/src/api.ts +++ b/apps/admin/src/api.ts @@ -3,7 +3,7 @@ import router from './router'; import { clearStaffSession, reconcileStaffSessionFromToken, useAuthStore } from './stores/auth'; import { ensureStaffSession, resetStaffSessionHydration } from './utils/session-hydrate'; -const api = axios.create({ baseURL: '/api' }); +const api = axios.create({ baseURL: '/admin/api' }); let handling401 = false; let handling403Portal = false; diff --git a/apps/admin/src/router/index.ts b/apps/admin/src/router/index.ts index 1a5647c..cb4e613 100644 --- a/apps/admin/src/router/index.ts +++ b/apps/admin/src/router/index.ts @@ -3,7 +3,7 @@ import { useAuthStore } from '../stores/auth'; import { ensureStaffSession } from '../utils/session-hydrate'; const router = createRouter({ - history: createWebHistory(), + history: createWebHistory('/admin'), routes: [ { path: '/login', component: () => import('../views/Login.vue'), meta: { public: true } }, { diff --git a/apps/admin/vite.config.ts b/apps/admin/vite.config.ts index 395196d..0a04aca 100644 --- a/apps/admin/vite.config.ts +++ b/apps/admin/vite.config.ts @@ -3,6 +3,7 @@ import vue from '@vitejs/plugin-vue'; import { resolve } from 'path'; export default defineConfig({ + base: '/admin/', plugins: [vue()], resolve: { // 避免 src 内遗留的 .js 抢先于 .ts/.vue 被解析(曾导致 i18n 文案缺失) @@ -15,6 +16,12 @@ export default defineConfig({ publicDir: resolve(__dirname, '../../packages/shared/public'), server: { port: 5174, - proxy: { '/api': { target: 'http://localhost:3000', changeOrigin: true } }, + proxy: { + '/admin/api': { + target: 'http://localhost:3000', + changeOrigin: true, + rewrite: (path) => path.replace(/^\/admin\/api/, '/api'), + }, + }, }, }); diff --git a/apps/api/.env b/apps/api/.env new file mode 100644 index 0000000..d484c66 --- /dev/null +++ b/apps/api/.env @@ -0,0 +1,8 @@ +DATABASE_URL=postgresql://thebet365:thebet365@localhost:5432/thebet365 +REDIS_URL=redis://localhost:6379 +JWT_SECRET=dev-secret-change-in-production +JWT_PLAYER_EXPIRES=24h +JWT_ADMIN_EXPIRES=2h +JWT_AGENT_EXPIRES=8h +PORT=3000 +NODE_ENV=development diff --git a/docker/nginx/admin.conf b/docker/nginx/admin.conf index 8537d89..8be3dca 100644 --- a/docker/nginx/admin.conf +++ b/docker/nginx/admin.conf @@ -9,9 +9,8 @@ server { gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml; - location /api/ { - set $api_upstream api:3000; - proxy_pass http://$api_upstream; + location /admin/api/ { + proxy_pass http://api:3000/api/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; @@ -19,7 +18,11 @@ server { proxy_set_header X-Forwarded-Proto $scheme; } + location /admin/ { + try_files $uri $uri/ /admin/index.html; + } + location / { - try_files $uri $uri/ /index.html; + return 301 /admin/; } }