web-dev-qa-db-ja.com

Nginxリバースプロキシからのカスタムヘッダーの転送

追加の処理のためにリクエストをApacheに転送するリバースプロキシとして機能するnginx Webサーバーがあります(理由は尋ねないでください)。カスタムヘッダーを添付しようとしているリクエストがあり、nginxがそのカスタムヘッダーをApacheに転送して、アプリで何かを行えるようにしたいと考えています。

私はHttpProxyModuleのドキュメントを調べましたが、たとえ適切な場所にいても、それらはあまり説明的ではありません(私がそうでない可能性もあります)。

NginxにX-CUSTOM-REFERRERヘッダーを転送させるにはどうすればよいですか?さらに、可能であれば、入ってくるanyカスタムヘッダーに沿って転送します。後者が多すぎて質問できない場合、前者は私の現在のニーズには十分です。

ご覧のとおり、私はnginxを初めて使用するので、修正バージョンが役に立ちます。

ありがとう。

[〜#〜]更新[〜#〜]

私の既存の設定からの関連スニペット:

location / {
    proxy_pass                  http://preview;
    proxy_redirect              off;
    proxy_set_header            Host $Host;
    proxy_set_header            X-Real-IP $remote_addr;
    proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
    # proxy_set_header            X-Custom-Referrer $x_custom_referrer;
}
27
Rob Wilkerson

proxy_set_headerHttpProxyModule のディレクティブを使用すると、これを実行できます。例えば:

proxy_pass http://apachehost;
proxy_set_header X-Custom-Referrer $proxy_add_<header_field_name_from_last_request>;
21
mgorven

モジュール ngx_headers_more を使用すると、httpヘッダーを変更および追加できます。

2
Yohann

アップストリームヘッダー($ http_で始まる名前)と追加のカスタムヘッダーを使用できます。例えば:

add_header X-Upstream-01 $http_x_upstream_01;
add_header X-Hdr-01  txt01;

次に、コンソールに移動し、ユーザーのヘッダーを使用してリクエストを送信します。

curl -H "X-Upstream-01: HEADER1" -I http://localhost:11443/

応答には、サーバーによって設定されたX-Hdr-01とクライアントによって設定されたX-Upstream-01が含まれます。

HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Mon, 30 Nov 2015 23:54:30 GMT
Content-Type: text/html;charset=UTF-8
Connection: keep-alive
X-Hdr-01: txt01
X-Upstream-01: HEADER1
1
shcherbak

デフォルトでは、nginxはすべての(proxy_pass_request_headers on;)ヘッダーをバックエンドサーバーに転送します。ただし、リクエストヘッダー(カスタムヘッダーの場合があります)のヘッダー名にアンダースコア(_)が含まれている場合、nginxはそれらのヘッダーをブロックします。

Ex: authenticate_type, cdn_enable.

Nginxがすべてまたはカスタムのリクエストされたヘッダーをバックエンドに渡すことができるようにするには、アンダースコアオプションをオンにします。

underscores_in_headers on;
0
GangaRam Dewasi