1. 程式人生 > >Nginx Upstream模塊

Nginx Upstream模塊

com 地址 body ash one log tmp pro number

upstream模塊

原文鏈接:http://nginx.org/en/docs/http/ngx_http_upstream_module.html
upstream  定義一組Server去監聽不同的端口 當然也可以監聽TCP或者Unix主機Socket
upstream backend {
    server backend1.example.com weight=5;
    server 127.0.0.1:8080       max_fails=3 fail_timeout=30s;
    server unix:/tmp/backend3;

    server backup1.example.com  backup;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

默認情況下 請求被轉發到backend服務器之後 使用權重輪訓的方法 將請求轉發到不同的服務器 在上面的例子中 每7個請求將被按照下面的策略被轉發:5個請求會被轉到到 backend1.example.com 第二個和第三個server每個都會被收到一個請求。如果在通訊過程中 如果有一臺服務器發生宕機 則請求會被轉發給下一臺server 直到所有可工作的server都被轉發過。如果所有的Server都無法響應 則 客戶端會收到最後一個server的響應

  • weight=number 設置Server的權重
  • max_conns=number 限制最大同時活躍連接數 默認是0 表示沒有限制
  • max_fails=number
    在fail_timeout時間內 最大的失敗連接次數 默認設置是1 0代表不限制
  • backup 備用服務器 當主服務器無效 則請求會被轉發到備用服務器
  • down 設置Server永久不可用狀態
  • resolve 定義域名解析 監測IP地址和域名之間的對應關系 在不重啟Nginx服務器的時候 可以動態修改upstream的配置
http {
    resolver 10.0.0.1;

    upstream u {
        zone ...;
        ...
        server example.com resolve;
    }
}
  • ip_hash 基於客戶端的IP地址 計算出對應的hash值 可以保證 在server有效的情況下 同一個客戶端的連接 會被轉發到相同的server上
upstream backend {
    ip_hash;

    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com down;
    server backend4.example.com;
}

Nginx Upstream模塊