NGINX não está encaminhando um valor de cabeçalho ao usar proxy_pass

5

Eu tenho a seguinte configuração e configurado para enviar todas as solicitações / api para um servidor diferente:

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

Meu aplicativo envia um cabeçalho (USER_CUSTOMER) ao se comunicar diretamente com myapp.herokuapp.com do aplicativo que ele funciona, mas ao solicitar por meio do servidor proxy, o valor aparece NULL no servidor da API.

O seguinte funciona no NGINX, mas eu preciso que o aplicativo seja capaz de definir o valor de USER_CUSTOMER.

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

Eu posso ter cabeçalhos adicionais para enviar no futuro, então espero que haja um sinalizador para passar todos os cabeçalhos do proxy para o servidor da API.

Ubuntu
nginx/1.1.19
    
por dallasclark 06.04.2014 / 00:27

2 respostas

16

O atributo de cabeçalho USER_CUSTOMER é uma sintaxe inválida. Os sublinhados não são válidos nos atributos de cabeçalho.

Existe uma solução alternativa, mas a melhor solução é reescrever o atributo para uma sintaxe válida.

A solução alternativa é definir o seguinte, onde você especifica o nome do servidor na configuração:

underscores_in_headers on;
    
por 06.04.2014 / 08:57
0

Acho que você está procurando a opção proxy_pass_request_headers . Defina como:

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