web-dev-qa-db-ja.com

nginxで非標準のHTTPヘッダーを取得するにはどうすればよいですか?

私はそこのnginx専門家に非常に簡単な質問をします。これはおそらくバグです。

Nginx 1.0.5では、次のnginx.confが指定されています。

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;       
    }
}

なぜこれは期待どおりに機能するのですか...

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

...しかし、そうではありません。

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

後者の場合、パラメーターはuwsgiアプリケーションに渡されますが、それは単なる空の文字列です。 HTTPヘッダーでは大文字と小文字が区別されないことがわかっていますが、ヘッダーが通常の形式(タイトルではなく、ダッシュではなくアンダースコア)に従っていない場合、nginxの動作は予期されません。

誰もがカスタムヘッダーをキャプチャする同様のニーズを持っていましたか? nginx.confの例はありますか?

25
hcalves

気にしないでください、それに設定があることを理解しました:

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

33
hcalves