2013-11-03 15 views
34

私はアプリケーションへのリクエストをフィルタするためにプロキシとしてNginxを使用しています。 "http_geoip_module"の助けを借りて、私は国別コードのhttpヘッダーを作成しており、 "headers-more-nginx-module"を使用してリクエストヘッダーとして渡したいと思います。これは、Nginx設定のロケーションブロックです。nginxプロキシサーバーからの転送要求ヘッダー

location/{ 
    proxy_pass      http://mysite.com; 
    proxy_set_header    Host http://mysite.com;; 
    proxy_pass_request_headers  on; 
    more_set_headers 'HTTP_Country-Code: $geoip_country_code'; 
} 

ただし、これは応答にヘッダを設定するだけです。私は "more_set_headers"の代わりに "more_set_input_headers"を使ってみましたが、ヘッダーは応答にも渡されませんでした。

私はここで何が欠けていますか?

+0

Hey Pelig。有用な応答を提供するものがあるときにアップヴォートを与えるのが通例です。答えを探しているときにここに着陸したことを知っていれば、質問をアップアップすることも適切です。サイトは評判に基づいているからです。私は同じ答えを探していたのであなたの質問とleshgrinderの答えをupvoted。 – jww

答えて

62

変数をプロキシバックエンドに渡す場合は、プロキシモジュールで変数を設定する必要があります。

location/{ 
    proxy_pass      http://example.com; 
    proxy_set_header    Host example.com; 
    proxy_set_header    HTTP_Country-Code $geoip_country_code; 
    proxy_pass_request_headers  on; 
} 

これでプロキシバックエンドに渡されました。

+4

私はそれを試したのでうまくいきませんが、それは明らかです。私は要求を適切に表示していませんでしたが、[tcpdump](http://www.tcpdump.org)を使用した後、ヘッダーがこの時間を過ぎたことがわかりました...ありがとう! – Peleg

+1

クライアントに設定されている場合。私はちょうどその価値を伝えたい。私はそれをリセットすることはできませんので、私のnginxの設定値が何であるか分かりません。 私が望むのは、クライアントによって作成されたカスタムヘッダーを、リバースプロキシサーバーにそのまま渡すことです。確かにこれを行う方法があります。 –

+15

サーバブロックで '' 'underscores_in_headers on '' 'を使うよりも、そうでないとnginxがそれらのヘッダを転送していないことを確認してください! ref:http://serverfault.com/a/586997/317502 – kishorer747

関連する問題