nginx가 HTTP_X_FORWARDED_PROTO 헤더를 전달하는 방법은 무엇입니까?


18

에서 설정을 연결하고 있습니다.

nginx > apache/php

haproxy > nginx > apache/php

(ssl 지원으로 컴파일 된 haproxy 1.5-dev18 사용)

nginx와 haproxy는 HTTP_X_FORWARDED_PROTO 헤더를 설정하도록 올바르게 설정되어 있습니다. 그러나 nginx는 haproxy에서 SSL 트래픽을 가져 오면 연결을 http로보고 헤더를 설정합니다.

HTTP_X_FORWARDED_PROTO 헤더가있는 경우 nginx를 설정하여 연결에 따라 계속 설정하려면 어떻게해야합니까?

답변:


36

나는 이것을 해결하는 방법을 알아 냈습니다. 문제는 nginx가 내 구성 의이 줄에서 haproxy로 설정된 헤더를 덮어 쓰는 것입니다.

proxy_set_header X-Forwarded-Proto $scheme;

나는 이것을 추가하여 고쳤다.

map $http_x_forwarded_proto $thescheme {
     default $scheme;
     https https;
 }   

새 체계를 사용하도록 proxy_set_header 행을 변경하십시오.

proxy_set_header X-Forwarded-Proto $thescheme;

내가 빠진 것이 아닌 한, 당신의 앞뒤 proxy_set_header줄은 동일합니다.
Wilfred Hughes

1
$scheme$thescheme.
Arlen Beiler

드문 경우이지만 이것이 안전하지 않습니까? 웹 브라우저가 HTTP 요청을 haproxy로 보내고 haproxy가 HTTPS 요청을 Nginx로 보내면 실제로는 요청 (haproxy에 대한 요청)이 안전하지 않은 HTTP이지만 HTTPS로 default $scheme설정 $thescheme됩니다. — 그것을 피하기 위해, 어떻 default $http_x_forwarded_proto; '' $scheme;습니까 : , 그래서 haproxy가 HTTP를 말한다면 그것은 존중 될 것입니다.
KajMagnus

여기에 제안됩니다 : stackoverflow.com/a/21911864/694469 (즉 default $http_x_forwarded_proto;).
KajMagnus

2

AWS ELB와 동일한 요구가있었습니다.

내 해결 선은 다음과 같습니다.

proxy_set_header        X-Forwarded-Proto $http_x_forwarded_proto;

$http_x_forwarded_proto어딘가에 내기를해야합니까 ? 그게 뭐야?
Jonathan

developer.mozilla.org/en-US/docs/Web/HTTP/Headers/… $ http_x_forwarded_proto는 NGINX 구현입니다
jobwat

2
당신은 내가 3 일 동안 망치로 쳤던 문제를 해결했습니다! https advocate와 함께 aws로드 밸런서의 주제에 대한 다른 모든 게시물proxy_set_header X-Forwarded-Proto $scheme;
MikeMarsian

1

나는 단지 코멘트 할 수 없으므로 이것을 대답으로 게시하십시오 : nginx 구성의 일부 또는 전부를 알려 주시면 무엇이 잘못되었는지 알 수 있습니까? 아마도 HAProxy 설정도 가능합니까?

내가 생각할 수있는 첫 번째 문제는 HAProxy가 SSL 종료를 수행하고 있다는 것입니다. 요약하면, 백엔드 서버를 오프로드하기 위해 모든 SSL 작업을 수행 한 다음 HTTP로 백엔드 서버와 통신하도록로드 밸런서를 구성 할 수 있습니다. 여기에서 계획처럼 : http://blog.exceliance.fr/2012/09/10/how-to-get-ssl-with-haproxy-getting-rid-of-stunnel-stud-nginx-or-pound/

귀하의 질문에 대한 올바른 답변을 제공하기 위해 http <> https 구성에 루프백 문제가 없는지 확인할 수 있습니까? 아마도 http를 http로, https를 https로 리디렉션 한 다음 http가 https로 리디렉션되도록 할 수 있습니다.

HAProxy 구성에서 SSL 통과를 활성화 했는지도 확인할 수 있습니까?


문제가 해결 되었습니까?
Yannovitch 2016 년

1
나는 그것을 알아. 귀하의 답변은 직접 도움이되지 않았지만 두 번째 링크는 그것을 해결하는 방법을 알아내는 데 도움이되었습니다. 감사.
에코는 모니카 복원 모니카
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.