Nginx를 역방향 프록시로 사용할 때 'Host' 헤더를 수정하거나 대신 'X-Forwarded-Host'를 전달하시겠습니까?

Nginx를 역방향 프록시로 사용할 때 'Host' 헤더를 수정하거나 대신 'X-Forwarded-Host'를 전달하시겠습니까?

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-HostHttpContext.Request.Host물론 전달된 헤더 미들웨어가 등록된 경우 예상 값으로 설정됩니다.

놀랍게도 이 문제에 대한 관련 정보를 구글링해도 찾을 수 없어서 여기에 질문하게 되었습니다. 이 상황에서 취해야 할 올바른 접근 방식은 무엇입니까?

관련 정보