nginx passando de volta o cabeçalho customizado

10

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
    
por Mike 03.08.2011 / 20:21

3 respostas

13

Você deve usar a diretiva underscores_in_headers on , desativada por padrão.

    
por 05.08.2011 / 09:05
2

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;
    
por 03.08.2011 / 23:13
1

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.

    
por 11.09.2013 / 09:42