Назад | Перейти на главную страницу

NGINX не пересылает значение заголовка при использовании proxy_pass

У меня есть следующая настройка и настроена для отправки всех запросов / api на другой сервер:

location /api {
    proxy_pass              https://myapp.herokuapp.com;
    rewrite                 ^/api/(.*)              /$1     break;
}

Мое приложение отправляет заголовок (USER_CUSTOMER) при непосредственном общении с myapp.herokuapp.com из приложения, которое оно работает, но при запросе через прокси-сервер значение отображается NULL на сервере API.

Следующее работает в NGINX, но мне нужно, чтобы приложение могло устанавливать значение USER_CUSTOMER.

location /api {
    proxy_pass              https://app.herokuapp.com;
    proxy_set_header        USER_CUSTOMER           ABC;
    rewrite                 ^/api/(.*)              /$1     break;
}

У меня могут быть дополнительные заголовки для отправки в будущем, поэтому я надеюсь, что есть флаг для передачи всех заголовков с прокси на сервер API.

Ubuntu
nginx/1.1.19

Атрибут заголовка USER_CUSTOMER имеет недопустимый синтаксис. Подчеркивания недопустимы в атрибутах заголовка.

Есть обходной путь, но лучшее решение - переписать атрибут на допустимый синтаксис.

Обходной путь - установить следующее, где вы указываете имя сервера в конфигурации:

underscores_in_headers on;

Я думаю ты ищешь proxy_pass_request_headers вариант. Включите:

location /api {
    proxy_pass_request_headers      on;
    proxy_pass                      https://app.herokuapp.com;
    proxy_set_header                USER_CUSTOMER              ABC;
    rewrite                         ^/api/(.*)                 /$1     break;
}