2015-10-15 20 views
6

3つのnginxサーバーのセットアップがあります。バックアップWebサーバとホームサーバは、どちらも同じ../sites-enabled../sites-availableというディレクトリを持っています。そして第三に、サーバーは、バックアップと設定してホームサーバーの両方を指すロードバランサとして機能:バックアップnginxサーバーのバックアップ504

upstream myapp1 { 
    server 1.1.1.1; #home server 
    server 2.2.2.2 backup; #backup server 
} 

server { 
    listen 80; 

    location/{ 
     proxy_pass http://myapp1; 
     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-Forwarded-Proto $scheme; 
    } 
} 

しかし、私は、私が見てテストしてい(よりグラフィカルに説明する)の問題が生じていますバックアップサーバが動作しているかどうかは、ホームサーバが動作しているときだけ動作しているようです。

1. test.foo.com -> Backup Web Server 
2. foo.com  -> Load Balancer 
3. www.foo.com -> Home server 

->

からポイント何がダウンしていないことを意味:ホームサーバーがダウンしているとき

- 1 returns OK 
- 2 returns OK 
- 3 returns OK 

を:

- 1 returns 504 **(SHOULD BE OK)** 
- 2 returns 504 **(SHOULD BE OK)** 
- 3 returns DNS error 

Load Balancerがダウンしている時:

- 1 returns OK 
- 2 returns DNS error 
- 3 returns OK 

BackupのWebサーバーがダウンしている:

- 1 returns DNS error 
- 2 returns 200 
- 3 returns 200 

答えて

1

あなたがここでの用語で混乱しているように見える:ロードバランサがダウンしているとき

  • 、あなたがconnect(2)Connection refusedを取得すると思いますまたはOperation timed out-スタイルエラー。あなたは、

  • 同様に、あなたの上流のホームサーバーから504を取得しているという事実をDNSエラーを取得することはないだろう、nginxがいる場合にのみbackupを使用するので、それは、ダウンので、バックアップサーバが使用されることは決してありませんされていないことを意味プライマリサーバは、あなたが潜在的にhealth_checkディレクティブをサポートしているのnginxの有料版を、取得することにより、第二の問題を解決することができ、本当に

利用できません。

また、キャッシングを実装して、proxy_cache_use_staleを使用して、代わりにキャッシュされたバージョンを返すよう指定することもできます。また、error_pageもご覧ください。

関連する問題