forwarder
forwarder는 HttpClient 기반 포워드 프록시 모듈입니다. requestKey로 허용된 대상만 호출하며, 서버 사이드 HTTP 요청을 대상 URL로 전달합니다.
책임 범위
ForwardUrls에 등록된requestKey를 실제 target URL로 변환합니다.- 클라이언트 IP 허용 목록을 확인한 뒤 프록시 요청을 실행합니다. BearerToken은 선택적으로 검증해 로그 사용자 정보에 사용합니다.
- 요청 메서드, 헤더, 본문을 대상 URL로 전달하고 응답을 반환합니다.
- HTML 응답에는
<base>태그를 주입해 상대 경로 리소스가 원본 사이트 기준으로 동작하게 합니다. - 상위 프록시, HTTPS 인증서 예외, 타임아웃, redirect 제한을 설정으로 제어합니다.
주요 API
| 메서드 | 경로 | 용도 |
|---|---|---|
GET | /forwarder/api/proxy/get-client-ip | 호출자의 IP 확인용 API입 니다. |
ALL | /forwarder/api/proxy/pipe?requestKey=... | 등록된 target으로 요청을 포워딩합니다. |
GET | /forwarder/api/forward-proxy-lab/* | 개발/검증용 lab 대상 페이지와 응답입니다. |
POST | /forwarder/api/forward-proxy-lab/proxy-execute | lab 화면에서 프로그램형 프록시 호출을 시험합니다. |
핵심 구현
Areas/forwarder/Controllers/ProxyController.cs: 실제 프록시 API입니다.Areas/forwarder/Controllers/ForwardProxyLabController.cs: 개발 검증용 target과 lab UI를 제공합니다.Services/ForwardProxyService.cs:HttpClient로 대상 URL을 호출하고 응답을 변환합니다.Extensions/ForwarderAuthorizationExtensions.cs: IP 허용과 BearerToken 검증을 담당합니다.
주요 설정
| 설정 | 설명 |
|---|---|
ForwardUrls | requestKey -> targetUrl을 담는 단일 JSON 객체 화이트리스트입니다. 등록되지 않은 key는 프록시할 수 없습니다. |
AuthorizationKey | 프록시 API 호출 인증 키입니다. 비워두면 <SystemID><실행 환경><호스트명>을 기본값으로 사 용합니다. |
AllowClientIP | 접근 가능한 클라이언트 IP 목록입니다. |
UseProxy, ProxyServer, ProxyUsername, ProxyPassword, ProxyBypass | 상위 프록시 체인 설정입니다. |
IgnoreHTTPSErrors | 테스트 환경의 TLS 오류를 무시할지 결정합니다. |
RequestTimeoutMS | 기본 요청 제한 시간입니다. |
MaxRedirects | redirect 최대 횟수입니다. |
ForwardUrls 예시는 다음과 같습니다.
{
"ForwardUrls": {
"sample-api": "https://example.com",
"lab-json": "http://localhost:8421/forwarder/api/forward-proxy-lab/target/json"
}
}
운영 주의사항
ForwardUrls는 외부 호출 allowlist이므로 운영 배포 전에 불필요한 lab key를 제거합니다.Proxy/Pipe호출은AllowClientIP에 등록되어야 합니다.IgnoreHTTPSErrors=true는 개발/검증 환경에만 사용합니다.- 브라우저 쿠키, localStorage, IndexedDB는 서버에서 저장하거나 복원하지 않습니다.