Nginx передает аргументы URL-адреса в качестве заголовка

В следующем примере:

http {                                                                        
        server { # simple reverse-proxy                                       
        listen       8080;                                                    
            location / {                                                      
                set $token $arg_token;                                        
                #return 200 $token;                                           
                add_header test "test $token";                                
                proxy_pass http://localhost:5601;                             
            }                                                                 
        } ...
}

если я оставлю токен return 200 $, я получаю токен как ответ + в заголовке (что является нормальным поведением), но когда я удаляю return, я получаю только «test» в качестве значения заголовка теста, что мне не хватает, пожалуйста?


person hereForLearing    schedule 18.08.2019    source источник


Ответы (1)


proxy_set_header устанавливает заголовок, который NGINX будет использовать при взаимодействии с восходящим потоком / серверной частью.

Вы не увидите этот добавленный заголовок в ответе NGINX обратно клиенту.

Если вы хотите это увидеть, используйте также add_header.

person Danila Vershinin    schedule 18.08.2019
comment
Спасибо за ответ, я привел не тот пример, пожалуйста, проверьте мой отредактированный вопрос, спасибо! - person hereForLearing; 19.08.2019
comment
Каков статус HTTP, если вы не добавляете return? Если ваше приложение возвращает ответ, отличный от 200, add_header не будет применяться, если вы не добавите к нему параметр always. - person Danila Vershinin; 19.08.2019
comment
Что произойдет, если вы просто используете add_header test "test $arg_token"; без set? Ваша проблема может быть связана с порядком подачи заявки на set + add_header + proxy_pass. - person Danila Vershinin; 19.08.2019
comment
проблема в том, что тест присутствует, это просто $ arg_token (или $ token), который не имеет значения, я не понимаю почему, у меня есть test header = test без токена - person hereForLearing; 19.08.2019
comment
хорошо, это действительно странно, но похоже, что проблема в кибане, если я попробую другой proxy_pass, он сработает ... :( - person hereForLearing; 19.08.2019
comment
но все равно так странно, что $ arg_token не будет установлен в случае кибаны ... - person hereForLearing; 19.08.2019