62 lines
2.1 KiB
JavaScript
62 lines
2.1 KiB
JavaScript
/** @type {import('next').NextConfig} */
|
||
const nextConfig = {
|
||
reactStrictMode: true,
|
||
output: 'standalone',
|
||
async rewrites() {
|
||
// 获取 API 基础 URL(Kong 网关地址)
|
||
// 生产环境: https://rwaapi.szaiai.com
|
||
// 开发环境: http://localhost:3023 (mining-admin-service)
|
||
const apiGatewayUrl = process.env.API_GATEWAY_URL || 'https://rwaapi.szaiai.com';
|
||
const miningAdminUrl = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3023';
|
||
const tradingServiceUrl = process.env.TRADING_SERVICE_URL || 'http://localhost:3022';
|
||
const miningServiceUrl = process.env.MINING_SERVICE_URL || 'http://localhost:3021';
|
||
|
||
// 检查是否是生产环境(使用 Kong 网关)
|
||
const isProduction = process.env.NODE_ENV === 'production';
|
||
|
||
// 移除末尾可能存在的路径避免重复
|
||
const cleanMiningAdminUrl = miningAdminUrl.replace(/\/api\/v2.*$/, '');
|
||
const cleanTradingUrl = tradingServiceUrl.replace(/\/api\/v2.*$/, '');
|
||
const cleanMiningUrl = miningServiceUrl.replace(/\/api\/v2.*$/, '');
|
||
|
||
if (isProduction) {
|
||
// 生产环境:通过 Kong 网关
|
||
// /api/trading/* -> Kong -> trading-service
|
||
// /api/mining/* -> Kong -> mining-service
|
||
// /api/* -> Kong -> mining-admin-service
|
||
return [
|
||
{
|
||
source: '/api/trading/:path*',
|
||
destination: `${apiGatewayUrl}/api/v2/trading/:path*`,
|
||
},
|
||
{
|
||
source: '/api/mining/:path*',
|
||
destination: `${apiGatewayUrl}/api/v2/mining/:path*`,
|
||
},
|
||
{
|
||
source: '/api/:path*',
|
||
destination: `${apiGatewayUrl}/api/v2/mining-admin/:path*`,
|
||
},
|
||
];
|
||
} else {
|
||
// 开发环境:直连各服务
|
||
return [
|
||
{
|
||
source: '/api/trading/:path*',
|
||
destination: `${cleanTradingUrl}/api/v2/:path*`,
|
||
},
|
||
{
|
||
source: '/api/mining/:path*',
|
||
destination: `${cleanMiningUrl}/api/v2/:path*`,
|
||
},
|
||
{
|
||
source: '/api/:path*',
|
||
destination: `${cleanMiningAdminUrl}/api/v2/:path*`,
|
||
},
|
||
];
|
||
}
|
||
},
|
||
};
|
||
|
||
module.exports = nextConfig;
|