nginx-чтение пользовательского заголовка с вышестоящего сервера

Я использую 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
    // ...
}

это возможно? Спасибо заранее.

3 ответов


$http_name_of_the_header_key

i.e если у вас есть origin = domain.com в заголовке, вы можете использовать $http_origin для "domain.com"

в nginx поддерживает произвольное поле заголовка запроса. В приведенном выше примере последняя часть имени переменной-это имя поля, преобразованное в нижний регистр с тире, замененным подчеркиванием

ссылка doc здесь: http://nginx.org/en/docs/http/ngx_http_core_module.html#var_http_

для вашего примера переменная будет $http_my_custom_header.


я столкнулся с той же проблемой. Я попробовал оба $http_my_custom_header и $sent_http_my_custom_header но это не работает для меня.

хотя решил эту проблему с помощью $upstream_http_my_custom_header.


используйте $http_MY_CUSTOM_HEADER

вы можете написать что-то вроде

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