web-dev-qa-db-fra.com

Comment obtenir des en-têtes HTTP non standard sur Nginx?

J'ai une question très simple à poser aux experts de Nginx. C'est peut-être un bug.

Dans nginx 1.0.5, étant donné le nginx.conf suivant:

server {
    server_name myserver;

    location / {
        uwsgi_pass 127.0.0.1:5001;
        uwsgi_param HTTP_MY_CUSTOM_HEADER $http_my_custom_header;
        include uwsgi_params;       
    }
}

Pourquoi cela fonctionne comme prévu ...

$ curl -H "My-Custom-Header: Yes" http://myserver/

... mais ce n'est pas le cas.

$ curl -H "MY_CUSTOM_HEADER: Yes" http://myserver/

Dans ce dernier cas, le paramètre est transmis à mon application uwsgi, mais ce n'est qu'une chaîne vide. Je sais que les en-têtes HTTP sont censés être insensibles à la casse, mais le comportement de nginx est inattendu lorsque l'en-tête ne suit pas le format habituel (casse du titre, traits de soulignement au lieu des tirets).

Quelqu'un avait-il le même besoin de capturer des en-têtes personnalisés? Des exemples de nginx.conf?

25
hcalves

Peu importe, j'ai compris qu'il y avait un paramètre:

http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers

33
hcalves