nginx-업스트림 서버에서 사용자 정의 헤더 읽기


81

nginx를 역방향 프록시로 사용하고 있으며 성공하지 않고 업스트림 서버 (Apache)의 응답에서 사용자 지정 헤더를 읽으려고합니다. Apache 응답은 다음과 같습니다.

HTTP/1.0 200 OK
Date: Fri, 14 Sep 2012 20:18:29 GMT 
Server: Apache/2.2.17 (Ubuntu)
X-Powered-By: PHP/5.3.5-1ubuntu7.10
Connection: close
Content-Type: application/json; charset=UTF-8
My-custom-header: 1

My-custom-header 에서 값을 읽고 if 절에서 사용 하고 싶습니다 .

location / {
    // ...
    // get My-custom-header value here
    // ...
}

이것이 가능한가? 미리 감사드립니다.

답변:


93

$ http _ name_of_the_header_key

origin = domain.com, 헤더에 있는 경우 $http_origin" domain.com " 을 가져 오는 데 사용할 수 있습니다.

nginx에서는 임의의 요청 헤더 필드를 지원합니다. 위의 예에서 변수 이름의 마지막 부분은 대시가 밑줄로 대체 된 소문자로 변환 된 필드 이름입니다.

참조 문서 : http://nginx.org/en/docs/http/ngx_http_core_module.html#var_http_

귀하의 예를 들어 변수는 $http_my_custom_header.


3
사실, 그것은 틀 렸으며 답으로 표시해서는 안됩니다. 앞으로이 문제를 접하게되는 모든 사람에게 올바른 변수는 $http_입니다. 예를 들어 영업 이익을 사용하여, $http_my_custom_header(!는 대소 문자를 구분합니다)
jduncanator는

문서와 일치하도록이 답변을 수정했습니다.)
Paul Dixon

14
결과적으로 이것은 올바르지 않습니다. OP는 응답 헤더의 값을 읽어달라고 요청했습니다. 당신은 사용해야합니다 $sent_http_my_custom_header. nginx.org/en/docs/http/ngx_http_core_module.html#var_sent_http_
Nathan

당신이 응답 헤더를 업스트림 필요하다면 아래 DEV-gosain 대답 @ 확인
Filimonov 보낸

14
대답이 틀 렸습니다. 요청하는 사람이 업스트림 서버 에서 헤더에 액세스하려고 합니다. 정답은 stackoverflow.com/a/30879181/111995
geekQ

50

나는 같은 문제에 직면했다. 나는 모두를 시도 $http_my_custom_header하고 $sent_http_my_custom_header있지만 나를 위해 작동하지 않았다.

이 문제는 $upstream_http_my_custom_header.


8

$ http_MY_CUSTOM_HEADER 사용

다음과 같이 쓸 수 있습니다.

set my_header $http_MY_CUSTOM_HEADER;
if($my_header != 'some-value') {
#do some thing;
}

6
man 말한다-변수 이름의 마지막 부분은 대시가 밑줄로 대체 된 소문자 로 변환 된 필드 이름 입니다.
Arjun Sreedharan

당신은 내 하루를 구했습니다, 감사합니다
MOS를
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.