2016-08-04 9 views
0

特定のnginx設定に問題があります。シナリオは次のようなものです:アプリケーションは、nginxプロキシ経由でcouchdbサービスにアクセスする必要があります。 nginxは、バックエンドにアクセスするために認証ヘッダを設定する必要があります。問題は、バックエンドのサービスのエンドポイントのDNSが時々変更され、その結果、nginxをリロードするまでサービスが停止するということです。ダイナミックnginxアップストリームが認証ヘッダーで動作しない

アップストリームを変数として設定しようとしていますが、そのときに認証が機能しなくなり、バックエンドから403が返されます。ちょうどupstreamディレクティブを使用するとうまく動作します。上流変数には正しい値があり、ログにはエラーはありません。

以下の設定の抜粋:

set $backend url.to.backend; 

location/{ 
    proxy_pass https://$backend/api; 
    proxy_redirect off; 
    proxy_http_version 1.1; 
    proxy_set_header Connection ""; 
    proxy_set_header Host url.to.backend; 
    proxy_set_header Authorization "Basic <authorization_gibberish>"; 
    proxy_temp_path /mnt/nginx_proxy; 
} 

すべてのヘルプは理解されるであろう。

答えて

0

商用バージョンがないかぎり、nginxはアップストリームの解像度をキャッシュします(proxy_passは基本的に「1つのサーバアップストリーム」です)。これを再解決する唯一の方法は、設定の再起動または再ロードです。これは、DNSの変更が問題であると仮定しています。

また、次のパラメータは、私たちの 商用サブスクリプションの一部として用意されています:upstream moduleドキュメントから

...

決意は - の変更を監視しますサーバのドメイン名に対応するIP のアドレスと、 は、アップストリームコンフィギュレーションを自動的に変更します。 nginx(1.5.12)を再起動します。

関連する問題