programing

nginx 프록시 서버에서 요청 헤더 전달

copyandpastes 2021. 1. 18. 22:14
반응형

nginx 프록시 서버에서 요청 헤더 전달


내 응용 프로그램에 대한 요청을 필터링하기 위해 Nginx를 프록시로 사용하고 있습니다. "http_geoip_module"의 도움으로 국가 코드 http-header를 만들고 "headers-more-nginx-module"을 사용하여 요청 헤더로 전달하려고합니다. 다음은 Nginx 구성의 위치 블록입니다.

location / {
    proxy_pass                      http://mysite.com;
    proxy_set_header                Host http://mysite.com;;
    proxy_pass_request_headers      on;
    more_set_headers 'HTTP_Country-Code: $geoip_country_code';
}

그러나 이것은 응답의 헤더 만 설정합니다. "more_set_headers"대신 "more_set_input_headers"를 사용해 보았지만 헤더가 응답에 전달되지도 않았습니다.

내가 여기서 무엇을 놓치고 있습니까?


프록시 백엔드에 변수를 전달하려면 프록시 모듈을 사용하여 설정해야합니다.

location / {
    proxy_pass                      http://example.com;
    proxy_set_header                Host example.com;
    proxy_set_header                HTTP_Country-Code $geoip_country_code;
    proxy_pass_request_headers      on;
}

이제 프록시 백엔드로 전달됩니다.


문제는 '_'밑줄이 헤더 속성에서 유효하지 않다는 것입니다. 밑줄을 제거하는 것이 옵션이 아닌 경우 서버 블록에 추가 할 수 있습니다.

underscores_in_headers on;

이것은 기본적으로 @Fleshgrinder 답변에 대한 @ kishorer747 주석의 복사 및 붙여 넣기이며 솔루션은 다음에서 제공됩니다. https://serverfault.com/questions/586970/nginx-is-not-forwarding-a-header-value-when-using -proxy-pass / 586997 # 586997

필자의 경우 nginx의 응용 프로그램이 완벽하게 작동하는 것처럼 여기에 추가했지만 ngix가 플라스크 앱과 클라이언트 사이에 있으면 플라스크 앱이 더 이상 헤더를 볼 수 없습니다. 디버그하는 데 시간이 많이 걸렸습니다.

참조 URL : https://stackoverflow.com/questions/19751313/forward-request-headers-from-nginx-proxy-server

반응형