summaryrefslogtreecommitdiff
path: root/app/api/test/headers/route.ts
diff options
context:
space:
mode:
authorjoonhoekim <26rote@gmail.com>2025-10-30 19:14:25 +0900
committerjoonhoekim <26rote@gmail.com>2025-10-30 19:14:25 +0900
commit1db30643d32619a352e759799a24e8f54b8137bf (patch)
tree400eb49c334b760fb5ccf27f26ab9f5a16eb9938 /app/api/test/headers/route.ts
parent89eb494450a12fcbf58a88d7786152af5d83a8cf (diff)
(김준회) 멀티 도메인 로그아웃시 경로 문제 처리
Diffstat (limited to 'app/api/test/headers/route.ts')
-rw-r--r--app/api/test/headers/route.ts80
1 files changed, 80 insertions, 0 deletions
diff --git a/app/api/test/headers/route.ts b/app/api/test/headers/route.ts
new file mode 100644
index 00000000..70c14564
--- /dev/null
+++ b/app/api/test/headers/route.ts
@@ -0,0 +1,80 @@
+import { NextRequest, NextResponse } from 'next/server';
+import { headers } from 'next/headers';
+
+/**
+ * 리버스 프록시 헤더 전달 테스트 API
+ *
+ * 접속 방법:
+ * - https://shidataroom.com/api/test/headers
+ * - https://partners.sevcp.com/api/test/headers
+ * - https://sevcp.com/api/test/headers
+ *
+ * 각 도메인에서 헤더가 올바르게 전달되는지 확인
+ */
+export async function GET(request: NextRequest) {
+ const headersList = await headers();
+
+ // 중요한 헤더들 수집
+ const host = headersList.get('host');
+ const xForwardedProto = headersList.get('x-forwarded-proto');
+ const xForwardedHost = headersList.get('x-forwarded-host');
+ const xForwardedFor = headersList.get('x-forwarded-for');
+ const xRealIp = headersList.get('x-real-ip');
+
+ // 현재 계산된 origin
+ const proto = xForwardedProto || 'http';
+ const computedOrigin = `${proto}://${host}`;
+
+ // request.nextUrl의 origin (Next.js가 인식하는 origin)
+ const nextUrlOrigin = request.nextUrl.origin;
+
+ return NextResponse.json({
+ success: true,
+ message: '리버스 프록시 헤더 정보',
+ headers: {
+ host,
+ 'x-forwarded-proto': xForwardedProto,
+ 'x-forwarded-host': xForwardedHost,
+ 'x-forwarded-for': xForwardedFor,
+ 'x-real-ip': xRealIp,
+ },
+ computed: {
+ origin: computedOrigin,
+ nextUrlOrigin,
+ isCorrect: computedOrigin === nextUrlOrigin,
+ },
+ recommendations: {
+ dmz_nginx: {
+ required: [
+ 'proxy_set_header Host $host;',
+ 'proxy_set_header X-Forwarded-Proto $scheme;',
+ 'proxy_set_header X-Forwarded-Host $host;',
+ 'proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;',
+ 'proxy_set_header X-Real-IP $remote_addr;',
+ ]
+ },
+ ap_nginx: {
+ required: [
+ 'proxy_set_header Host $host;',
+ 'proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;',
+ 'proxy_set_header X-Forwarded-Host $http_x_forwarded_host;',
+ 'proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;',
+ 'proxy_set_header X-Real-IP $http_x_real_ip;',
+ ]
+ }
+ },
+ test: {
+ description: '각 도메인에서 이 API를 호출하여 헤더가 올바른지 확인하세요',
+ expected: {
+ 'shidataroom.com': 'computed.origin should be "https://shidataroom.com"',
+ 'partners.sevcp.com': 'computed.origin should be "https://partners.sevcp.com"',
+ 'sevcp.com': 'computed.origin should be "https://sevcp.com"',
+ }
+ }
+ }, {
+ headers: {
+ 'Content-Type': 'application/json',
+ }
+ });
+}
+