Nginx
使用 Nginx 進行負載平衡和 HA
前言:我正在嘗試實現藍綠部署。
具有以下內容
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 分鐘而不是
fail_timeout
價值?- 為什麼它不簡單地回復
upstream
指令中的另一個可用伺服器?
我剛想通,這是個
proxy_connect_timeout
問題。所以我剛剛添加了:
proxy_connect_timeout 2s;
location / {}
阻止_