쿠버네티스 환경에서 Client IP 를 확인해 보면 Pod 의 IP 가 남게됩니다.
이는 로드 밸런서 뒤에서 Balzor 애플리케이션이 동작하고 있기때문입니다.
이를 Client의 실제 IP 를 남겨 주기 위해서는 아래 코드를 추가해주면 됩니다.
// 사용자 IP 처리
ForwardedHeadersOptions forwardedOptions = new()
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
};
forwardedOptions.KnownNetworks.Clear();
forwardedOptions.KnownProxies.Clear();
app.UseForwardedHeaders(forwardedOptions);
위 코드는 프록시 서버나 로드 밸런서 뒤에 있을 때 클라이언트의 실제 IP 주소를 올바르게 처리하기 위한 설정입니다.
ForwardedHeaders 의 X-Forwarded-For는 클라이언트의 원래 IP 주소를 포함합니다.
X-Forwarded-Proto는 클라이언트가 사용한 원래 프로토콜(HTTP 또는 HTTPS)을 나타냅니다.
forwardedOptions.KnownNetworks.Clear();
forwardedOptions.KnownProxies.Clear();
위 코드는 기본적으로 신뢰할 수 있는 것으로 간주되는 네트워크와 프록시 목록을 지웁니다.
app.UseForwardedHeaders(forwardedOptions);
위 코드는 앞서 구성한 옵션을 사용하여 ForwardedHeaders 미들웨어를 애플리케이션 파이프라인에 추가합니다.
X-Forwarded-For 및 X-Forwarded-Proto 헤더를 처리하여 요청의 원래 클라이언트 IP 주소와 프로토콜을 올바르게 표시합니다.
앞에서도 설명했지만 이 설정은 특히 프록시 서버나 로드 밸런서를 사용하는 프로덕션 환경에서 클라이언트의 실제 정보를 정확히 파악하고 처리할수 있게합니다.
Blazor에서 MonacoEitor 사용하기 (0) | 2024.11.16 |
---|---|
Blazor Serilog 에서 HTTP 로깅 제외하기 (0) | 2024.10.30 |
Blazor reconnection 메세지 줄이는 방법 (1) | 2024.10.24 |
Blazor iFrame 내에 포함될 수 있게 하기 - Content Security Policy (CSP) (0) | 2024.10.21 |
Blazor App 을 GitHub Action 으로 CI/CD 하기 (0) | 2024.10.16 |