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

Как передать заголовки из nginx X-Accel-Redirect обратно в браузер?

Я использую функцию nginx X-Accel-Redirect, в которой прокси-сервер (A) может «внутренне перенаправить» nginx для повторной обработки нового URI (B), как если бы он был изначально задан клиентским браузером.

Он отлично работает при отправке запроса B (также проксируемом) и возвращении результирующих заголовков B обратно в браузер клиента. Все идет нормально.

Но также у меня есть несколько заголовков из A, которые я тоже хотел бы передать. Другими словами, объедините несколько заголовков из A с результатом из B.

Как я могу это сделать? я пробовал

add_header  X-My-Header  $http_x_my_header;

Но это $http_x_my_header переменная пуста, предположительно потому, что оригинал в запросе его не было. Я также пробовал $upstream_x_my_header но это тоже пусто. Я пробовал такие вещи, как proxy_pass_header X-My-Header; но нет.

После проб и ошибок я нашел $upstream_http_... заголовки, которые будут работать при первом назначении переменной;

Итак, с вашим примером это будет примерно таким:

  set $my_header '$upstream_http_x_my_header';
  add_header  X-My-Header  $my_header;

Согласно руководству nginx для proxy_set_header:

Если значение - пустая строка, то заголовок не будет отправлен в восходящий поток.

Попробуйте использовать proxy_set_header X-My-Header "OK" или, возможно, переменная, которую вы хотите использовать в качестве значения. Это должно передать его прокси, а также пользователю.