Nginx를 역방향 프록시로 사용하려고 하는데 업스트림 서버는 내가 등록한 ASP.NET Core 애플리케이션입니다.ForwardedHeadersMiddleware
, 세 가지 다른 헤더를 읽습니다 X-Forwarded-*
.
X-Forwarded-For
X-Forwarded-Proto
X-Forwarded-Host
이제 처음 두 개는 이해가 되지만 마지막 것( X-Forwarded-Host
)은 혼란스럽습니다. Nginx 역방향 프록시 구성은 일반적으로 다음과 같이 헤더를 다시 작성하는 것을 보았습니다 Host
.
location / {
proxy_pass http://app;
proxy_set_header Host $host;
}
하지만 대신에 다음이 사용되는 것도 보았습니다 X-Forwarded-Host
.
location / {
proxy_pass http://app;
proxy_set_header X-Forwarded-Host $host;
}
어떤 경우에는 두 가지가 동시에 사용됩니다.
location / {
proxy_pass http://app;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
}
어떻게 해야 할지 모르겠습니다. 왜 두 가지를 동시에 사용합니까? 헤더 X-Forwarded-Host
를 직접 변경할 수 있다면 왜 헤더를 사용하겠습니까 Host
? ASP.NET Core 앱의 결과는 두 경우 모두 설정 Host
여부 에 관계없이 동일하다는 것을 확인했습니다 .X-Forwarded-Host
HttpContext.Request.Host
물론 전달된 헤더 미들웨어가 등록된 경우 예상 값으로 설정됩니다.
놀랍게도 이 문제에 대한 관련 정보를 구글링해도 찾을 수 없어서 여기에 질문하게 되었습니다. 이 상황에서 취해야 할 올바른 접근 방식은 무엇입니까?