Nginx

使用 Nginx 進行負載平衡和 HA

  • June 26, 2020

前言:我正在嘗試實現藍綠部署。

具有以下內容nginx.conf

http {

   upstream backend {
       keepalive_timeout               65;

       server django_blue:8000 fail_timeout=5s max_fails=1;
       server django_green:8000 fail_timeout=5s max_fails=1;
   }

   server {
       listen 80 default_server;

       location / {
           proxy_pass              http://backend;
           proxy_redirect          off;
           proxy_set_header        Host $http_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-Host $host;
           proxy_set_header        X-Forwarded-Proto https;
           proxy_read_timeout      2s;
           client_max_body_size    20m;
       }
   }
}
  • 如果django_blue並且django_green都啟動並執行一切正常:nginx 在 Roundrobin 中正確地進行了 LB。
  • 如果我關閉其中一個 - 比如說django_green然後在 Chrome 上進行 Web 請求,如果輪詢提供關閉的伺服器,django_green它會等待 1 分鐘(正好 60 秒),然後使用504 Gateway Error.

所以我有兩個問題:

  1. 為什麼它等待 1 分鐘而不是fail_timeout價值?
  2. 為什麼它不簡單地回復upstream指令中的另一個可用伺服器?

我剛想通,這是個proxy_connect_timeout問題。

所以我剛剛添加了: proxy_connect_timeout 2s;

location / {}阻止_

引用自:https://serverfault.com/questions/1023066