nginx: 高效能http和反向代理伺服器

_易發表於2019-05-10

1、nginx在應用程式中的作用:

  • 解決跨域
  • 請求過濾
  • 配置gzip
  • 負載均衡
  • 靜態資源伺服器

2、基本配置

// nginx.conf.js
events { // 配置nginx與使用者的網路連線
    
}
http { // 配置代理、快取、日誌定義、配置第三方模組等
    server { // 配置虛擬主機的引數
        listen 8080,
        server_name: www.baidu.com; //服務端域名
        location / (請求路徑) { // 配置請求路由
            proxy_pass http://0.0.0.0:3000; // 設定代理
        }
        location = *.html {
            root G:/My_Project/Server/index.html; // 獲取靜態檔案,注意符號: / 
        }
        location / {
            rewrite ^.*$ / index.html redirect; //精準匹配url,並重定向
        }
    }
    //負載均衡配置
    server {
        listen: 9001;
        server_name: xxx.com;
        location /api {
            proxy_pass http://balanceServer;
        }
    }
    upstream  balanceServer { // 配置後端伺服器的具體地址,負載均衡不可或缺
        least_conn;  // 配置連線策略
        server 10.132.28.29:3030;
        server 10.132.28.30:3030;
        server 10.132.28.31:3030;
        server 10.132.28.32:3030;
    }
}
gzip                 on;     // on/off(default) 開啟或關閉
gzip_http_version    1.1;    // 需要的最低http版本, 預設http/1.1
gzip_comp_level      5;      // 壓縮級別 1-9(default 1)
gzip_min_length      1000;   // 允許壓縮的最小位元組, default 0
gzip_types           text/csv  text/xml  text/css  text/plain  text/javascript  application/javascript
                     application/x-javascript  application/json  application/xml;
                     //壓縮的檔案型別,default text/html
複製程式碼

3、內建全域性變數

變數名 作用
$host 請求資訊中的Host
$request_method 請求型別
$remote_addr 客戶端的IP地址
$args 請求引數
$http_cookie 客戶端cookie資訊
$remote_port 客戶端埠
$server_addr 服務端地址
$server_name 服務端名稱
$server_port 服務端埠

4、負載均衡策略

  • 輪詢策略(預設): 其中一臺伺服器出現延遲,影響所有分配到此伺服器的使用者;
  • 最小連線數策略(least_conn): 優先分配給壓力較小的伺服器;
  • 最快響應時間策略(fair):優先分配給響應時間最短的;
  • 客戶端ip繫結(ip_hash): 同一個ip的請求只分配給一臺伺服器,解決網頁session共享問題。

相關文章