Use internal backend URL for frontend server runtime
This commit is contained in:
@ -11,6 +11,7 @@ WEBHOOK_VERIFY_TOKEN=replace-with-32-plus-char-random-token
|
||||
WEBHOOK_SHARED_SECRET=replace-with-32-plus-char-random-secret
|
||||
META_WEBHOOK_APP_SECRET=
|
||||
WEBHOOK_ALLOW_UNSIGNED=false
|
||||
INTERNAL_API_URL=http://127.0.0.1:3001/api
|
||||
NEXT_PUBLIC_API_URL=http://localhost:3000/backend-api
|
||||
MAIL_HOST=mail.example.com
|
||||
MAIL_PORT=465
|
||||
|
||||
@ -136,6 +136,7 @@ Nilai yang wajib dipakai untuk domain ini:
|
||||
NODE_ENV=production
|
||||
FRONTEND_ORIGIN=https://portal.bizone.id
|
||||
PUBLIC_API_URL=https://portal.bizone.id
|
||||
INTERNAL_API_URL=http://127.0.0.1:3001/api
|
||||
NEXT_PUBLIC_API_URL=https://portal.bizone.id/api
|
||||
PORT=3001
|
||||
WEBHOOK_ALLOW_UNSIGNED=false
|
||||
@ -344,3 +345,10 @@ NEXT_PUBLIC_API_URL=https://portal.bizone.id/backend-api
|
||||
|
||||
Ini penting agar frontend server-side berbicara ke backend asli, sementara browser tetap bisa memakai route handler Next.js di `/api/*`.
|
||||
|
||||
Tambahkan juga:
|
||||
|
||||
```dotenv
|
||||
INTERNAL_API_URL=http://127.0.0.1:3001/api
|
||||
```
|
||||
|
||||
`INTERNAL_API_URL` dipakai oleh server-side frontend, middleware, dan server actions untuk langsung memanggil backend internal tanpa lewat reverse proxy publik.
|
||||
|
||||
@ -6,6 +6,7 @@ REDIS_URL=redis://127.0.0.1:6379
|
||||
PORT=3001
|
||||
FRONTEND_ORIGIN=https://portal.bizone.id
|
||||
PUBLIC_API_URL=https://portal.bizone.id
|
||||
INTERNAL_API_URL=http://127.0.0.1:3001/api
|
||||
NEXT_PUBLIC_API_URL=https://portal.bizone.id/backend-api
|
||||
|
||||
JWT_SECRET=UsmlPBa61fKDgTjUR+9sS9f5SKw3OF7X0CjGWoHibg2eF7gQO6sS57pc2Hj8XIv4
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
import { NextRequest, NextResponse } from 'next/server';
|
||||
|
||||
const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3001/api';
|
||||
import { SERVER_API_URL as API_URL } from './src/lib/server-api';
|
||||
const AUTH_COOKIE = 'wa_session';
|
||||
const REFRESH_COOKIE = 'wa_refresh';
|
||||
const SESSION_REFRESH_LEEWAY_SECONDS = 60;
|
||||
|
||||
@ -10,8 +10,8 @@ import {
|
||||
twoFactorEmailCookieName,
|
||||
} from '../lib/auth';
|
||||
import { defaultLocale, isLocale, localeCookieName } from '../lib/i18n';
|
||||
import { SERVER_API_URL as API_URL } from '../lib/server-api';
|
||||
|
||||
const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3001/api';
|
||||
const secureCookies = process.env.NODE_ENV === 'production';
|
||||
|
||||
type FormState = {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3001/api';
|
||||
import { SERVER_API_URL as API_URL } from './server-api';
|
||||
|
||||
async function readJson<T>(response: Response): Promise<T> {
|
||||
const payload = await response.json();
|
||||
|
||||
3
frontend/src/lib/server-api.ts
Normal file
3
frontend/src/lib/server-api.ts
Normal file
@ -0,0 +1,3 @@
|
||||
export const SERVER_API_URL =
|
||||
process.env.INTERNAL_API_URL?.trim() ||
|
||||
'http://127.0.0.1:3001/api';
|
||||
Reference in New Issue
Block a user