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
// ...
}
Возможно ли это? Заранее спасибо.
Ответы
Ответ 1
$HTTP _name_of_the_header
В nginx поддерживается произвольное поле заголовка запроса. В приведенном выше примере последняя часть имени переменной - это имя поля, преобразованное в нижний регистр с заменой тире на символы подчеркивания
Справочный документ здесь: http://nginx.org/en/docs/http/ngx_http_core_module.html#var_http_
Для вашего примера переменная будет $http_my_custom_header
.
Ответ 2
Я столкнулся с той же проблемой. Я пробовал как $http_my_custom_header
, так и $sent_http_my_custom_header
, но для меня это не сработало.
Хотя эта проблема решена с помощью $upstream_http_my_custom_header
.
Ответ 3
Используйте $http_MY_CUSTOM_HEADER
Вы можете написать что-то вроде
set my_header $http_MY_CUSTOM_HEADER;
if($my_header != 'some-value') {
#do some thing;
}