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 검증을 담당합니다.