web-dev-qa-db-ja.com

nginx-アップストリームサーバーからカスタムヘッダーを読み取ります

私はnginxをリバースプロキシとして使用しており、成功せずにアップストリームサーバー(Apache)の応答からカスタムヘッダーを読み取ろうとしています。 Apacheの応答は次のとおりです。

HTTP/1.0 200 OK
Date: Fri, 14 Sep 2012 20:18:29 GMT 
Server: Apache/2.2.17 (Ubuntu)
X-Powered-By: PHP/5.3.5-1ubuntu7.10
Connection: close
Content-Type: application/json; charset=UTF-8
My-custom-header: 1

My-custom-headerから値を読み取り、if句で使用したい:

location / {
    // ...
    // get My-custom-header value here
    // ...
}

これは可能ですか?前もって感謝します。

63
luis

$ http_name_of_the_header_key

つまり、ヘッダーにOrigin = domain.comがある場合、$http_Originを使用して「domain.com」を取得できます。

Nginxでは、任意のリクエストヘッダーフィールドをサポートします。上記の例では、変数名の最後の部分は、ダッシュがアンダースコアに置き換えられて小文字に変換されたフィールド名です

参照ドキュメント: http://nginx.org/en/docs/http/ngx_http_core_module.html#var_http_

あなたの例では、変数は$http_my_custom_headerになります。

70
cobaco

私は同じ問題に直面していました。 $http_my_custom_header$sent_http_my_custom_headerの両方を試しましたが、うまくいきませんでした。

$upstream_http_my_custom_headerを使用してこの問題を解決しましたが。

39
Dev Gosain

$ http_MY_CUSTOM_HEADERを使用

次のようなものを書くことができます

set my_header $http_MY_CUSTOM_HEADER;
if($my_header != 'some-value') {
#do some thing;
}
6
Vladimir