Nginx Reverse Proxyからのカスタムヘッダーの転送


25

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

私はHttpProxyModuleドキュメントを熟読しましたが、適切な場所にいてもあまり説明的ではありません(私はそうではないかもしれません)。

nginxにX-CUSTOM-REFERRERヘッダーを転送させるにはどうすればよいですか?また、可能であれば、私はそれを一緒に転送したい任意の入って来カスタムヘッダー。後者はあまりにも依頼する場合には、前者は私の現在の必要性のために十分であろう。

ご覧のとおり、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;
}

回答:


20

HttpProxyModuleproxy_set_headerディレクティブにより、これを行うことができます。例えば:

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

1
ありがとう、@ mgorven。ただし、入力値は可変です。受信X-Custom-Referrerヘッダーから値を読み取り、それを渡すことはできますか?proxy_set_header X-Custom-Referrer $x_custom_referrerまたはその効果のために何か?
ロブウィルカーソン

1
はい、使用できます$http_x_custom_referrer。ただし、クライアントから送信されたすべてのヘッダーは、自動的にバックエンドに渡される必要があります。proxy_pass_request_headers offどこかに設定しましたか?
mgorven

私が見ることができるというわけではありません。構成ファイルのスニペットで質問を更新しました。ただし、そのヘッダーがアプリに到達するわけではありません。そうは言っも、ソースアプリが送信ていると想定しているので、デューデリジェンスを行い、それがデフォルトの動作であるべきかどうかを確認します。
ロブウィルカーソン

スニペットの@RobWilkersonは、関連するproxy_set_headerコメントアウトされています。また、$x_custom_referrer代わりに$http_x_custom_referrer... を使用しています
セベリン

私はmgorvenの答えがあることを更新する必要があります@だと思う$http_<custom_header_field>の代わりに$proxy_add_<custom_header_field>
トライグエン

2

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


このモジュールは、応答にヘッダーを追加します。それはOPが求めているものではありません。彼らは、追加のヘッダーをアップストリームに送信する必要がありますproxy_pass
ビクターシュレーダー

1

アップストリームヘッダー($ 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
これは、応答にヘッダーを設定しています。OPは、proxy_passディレクティブのアップストリームに送信されるヘッダーを設定したいと考えています。
ビクターシュレーダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.