From 230f180dea3d3f30e332a08df26bad1a28121b27 Mon Sep 17 00:00:00 2001 From: "Lv, Qi" Date: Sat, 8 Nov 2025 22:59:03 +0800 Subject: [PATCH] fix(frontend): remove localhost rewrites and enforce NEXT_PUBLIC_BACKEND_URL - remove Next.js rewrites to http://127.0.0.1:8000 - require NEXT_PUBLIC_BACKEND_URL in API routes (config, financials, config/test) - prevent accidental fallback to host ports; use container service name backend:8000 --- frontend/next.config.mjs | 12 ------------ frontend/src/app/api/config/route.ts | 8 +++++++- frontend/src/app/api/config/test/route.ts | 5 ++++- frontend/src/app/api/financials/[...slug]/route.ts | 5 ++++- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/frontend/next.config.mjs b/frontend/next.config.mjs index 0dc09c1..ef06953 100644 --- a/frontend/next.config.mjs +++ b/frontend/next.config.mjs @@ -13,18 +13,6 @@ const nextConfig = { experimental: { proxyTimeout: 300000, // 300 seconds (5 minutes) }, - async rewrites() { - return [ - { - source: "/api/:path*", - destination: "http://127.0.0.1:8000/api/:path*", - }, - { - source: "/health", - destination: "http://127.0.0.1:8000/health", - }, - ]; - }, }; export default nextConfig; \ No newline at end of file diff --git a/frontend/src/app/api/config/route.ts b/frontend/src/app/api/config/route.ts index 9850102..42a39ae 100644 --- a/frontend/src/app/api/config/route.ts +++ b/frontend/src/app/api/config/route.ts @@ -1,14 +1,20 @@ import { NextRequest } from 'next/server'; -const BACKEND_BASE = process.env.NEXT_PUBLIC_BACKEND_URL || 'http://127.0.0.1:8000/api'; +const BACKEND_BASE = process.env.NEXT_PUBLIC_BACKEND_URL; export async function GET() { + if (!BACKEND_BASE) { + return new Response('NEXT_PUBLIC_BACKEND_URL 未配置', { status: 500 }); + } const resp = await fetch(`${BACKEND_BASE}/config`); const text = await resp.text(); return new Response(text, { status: resp.status, headers: { 'Content-Type': resp.headers.get('Content-Type') || 'application/json' } }); } export async function PUT(req: NextRequest) { + if (!BACKEND_BASE) { + return new Response('NEXT_PUBLIC_BACKEND_URL 未配置', { status: 500 }); + } const body = await req.text(); const resp = await fetch(`${BACKEND_BASE}/config`, { method: 'PUT', diff --git a/frontend/src/app/api/config/test/route.ts b/frontend/src/app/api/config/test/route.ts index fa94fb1..485cb33 100644 --- a/frontend/src/app/api/config/test/route.ts +++ b/frontend/src/app/api/config/test/route.ts @@ -1,8 +1,11 @@ import { NextRequest } from 'next/server'; -const BACKEND_BASE = process.env.NEXT_PUBLIC_BACKEND_URL || 'http://127.0.0.1:8000/api'; +const BACKEND_BASE = process.env.NEXT_PUBLIC_BACKEND_URL; export async function POST(req: NextRequest) { + if (!BACKEND_BASE) { + return new Response('NEXT_PUBLIC_BACKEND_URL 未配置', { status: 500 }); + } const body = await req.text(); const resp = await fetch(`${BACKEND_BASE}/config/test`, { method: 'POST', diff --git a/frontend/src/app/api/financials/[...slug]/route.ts b/frontend/src/app/api/financials/[...slug]/route.ts index 4457f75..f2f9142 100644 --- a/frontend/src/app/api/financials/[...slug]/route.ts +++ b/frontend/src/app/api/financials/[...slug]/route.ts @@ -1,11 +1,14 @@ import { NextRequest } from 'next/server'; -const BACKEND_BASE = process.env.NEXT_PUBLIC_BACKEND_URL || 'http://127.0.0.1:8000/api'; +const BACKEND_BASE = process.env.NEXT_PUBLIC_BACKEND_URL; export async function GET( req: NextRequest, context: { params: Promise<{ slug: string[] }> } ) { + if (!BACKEND_BASE) { + return new Response('NEXT_PUBLIC_BACKEND_URL 未配置', { status: 500 }); + } const url = new URL(req.url); const { slug } = await context.params; const path = slug.join('/');