본문으로 건너뛰기

forwarder

forwarderHttpClient 기반 포워드 프록시 모듈입니다. 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-executelab 화면에서 프로그램형 프록시 호출을 시험합니다.

핵심 구현

  • Areas/forwarder/Controllers/ProxyController.cs: 실제 프록시 API입니다.
  • Areas/forwarder/Controllers/ForwardProxyLabController.cs: 개발 검증용 target과 lab UI를 제공합니다.
  • Services/ForwardProxyService.cs: HttpClient로 대상 URL을 호출하고 응답을 변환합니다.
  • Extensions/ForwarderAuthorizationExtensions.cs: IP 허용과 BearerToken 검증을 담당합니다.

주요 설정

설정설명
ForwardUrlsrequestKey -> targetUrl을 담는 단일 JSON 객체 화이트리스트입니다. 등록되지 않은 key는 프록시할 수 없습니다.
AuthorizationKey프록시 API 호출 인증 키입니다. 비워두면 <SystemID><실행 환경><호스트명>을 기본값으로 사용합니다.
AllowClientIP접근 가능한 클라이언트 IP 목록입니다.
UseProxy, ProxyServer, ProxyUsername, ProxyPassword, ProxyBypass상위 프록시 체인 설정입니다.
IgnoreHTTPSErrors테스트 환경의 TLS 오류를 무시할지 결정합니다.
RequestTimeoutMS기본 요청 제한 시간입니다.
MaxRedirectsredirect 최대 횟수입니다.

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는 서버에서 저장하거나 복원하지 않습니다.