Você deve usar a diretiva underscores_in_headers on
, desativada por padrão.
Eu tenho o seguinte exemplo
location / {
proxy_read_timeout 2000;
proxy_next_upstream error;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass_header X_CUSTOM_HEADER;
proxy_redirect off;
proxy_max_temp_file_size 0;
proxy_pass https://prod;
break;
}
Agora, quando eu uso a seguinte linha de onda
curl --head -H "X_CUSTOM_HEADER: foo" http://domain.com/api/test
Agora que isso não funciona ... o apache / php no backend não vê o cabeçalho. Se eu ignorar o nginx, funciona
curl --head -H "X_CUSTOM_HEADER: foo" http://web1.domain.com/api/test
Você deve usar a diretiva underscores_in_headers on
, desativada por padrão.
Você deve usar proxy_set_header
para todos os cabeçalhos que deseja encaminhar para os servidores de backend. Então, em vez de proxy_pass_header ...
line:
proxy_set_header X_CUSTOM_HEADER $http_x_custom_header;
O acima não funcionou para mim também, então usei proxy_pass_header
. Veja o Wiki do Nginx sobre proxy_pass_header aqui .
Se o seu cabeçalho personalizado for device_id
add proxy_pass_header device_id;
no seu bloco Proxy.
Se você estiver usando cabeçalhos personalizados com um sublinhado (como eu), certifique-se de ter underscores_in_headers on
em sua Configuração do Nginx.
Tags nginx http-headers