Я использую функцию 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"
или, возможно, переменная, которую вы хотите использовать в качестве значения. Это должно передать его прокси, а также пользователю.