1. 程式人生 > >Nginx反向代理--負載均衡的配置、Rewrite、伺服器配置指令

Nginx反向代理--負載均衡的配置、Rewrite、伺服器配置指令

原文:https://blog.csdn.net/libing1991_/article/details/48059059

Nginx伺服器配置指令: 
Rewrite功能,代理功能

Rewrite功能

後端伺服器組的配置指令

upstream指令

upstream指令是設定後端伺服器組的主要指令

upstream name {...} 

請求按照輪叫排程(Round-Robin, RR)策略順序選擇伺服器處理

server

server指令用於設定組內的伺服器

server address [params];
  • address:伺服器地址,可以包括埠號或者以”unix:”為字首的程序間通訊的Unix Domain Socket
  • params:為當前伺服器配置更多屬性。 
    weight=number,組內伺服器權重,權重高的優先處理請求(採用加權輪詢策略) 
    max_fails=number,設定一個請求失敗的次數,當對組內伺服器請求失敗次數超過該變數時,認為該伺服器無效(404除外) 
    fail_timeout=time,設定嘗試請求某臺組內伺服器的時間,檢查伺服器是否有效 
    backup,將伺服器標記為備用伺服器 
    down,標記伺服器永久失效

ip_hash指令

ip_hash指令用於實現會話保持功能,將某個客戶端的多次請求定向到組內同一臺伺服器上,保證客戶端與伺服器之間建立穩定的會話。 
注:ip_hash指令不能與weight變數一起使用,在整個系統中,Nginx伺服器必須處於最前端的伺服器,而且客戶端地址必須為C類地址

keepalive指令

keepalive指令用於控制網路連線保持功能

keepalive connections;

設定伺服器的每一個工作程序允許該伺服器組保持的空閒網路連線數的上限值

least_conn指令

least_conn指令用於配置Nginx伺服器使用負載均衡策略為網路連線分配伺服器組內的伺服器,將請求分配給當前網路連線最少的伺服器

Rewrite功能的配置指令

Rewrite功能的多種應用

代理功能

Nginx正向代理服務配置指令

resolver指令

resolver指令用於指定DNS伺服器的IP地址

resolver address ... [valid=time];
  • address,DNS伺服器的IP地址,預設埠35
  • time,設定資料包在網路中的有效時間

resolve_timeout指令

resolve_timeout指令用於設定DNS伺服器域名解析超時時間

resolve_timeout time;

proxy_pass指令

proxy_pass指令用於設定代理伺服器的協議和地址

proxy_pass URL;

Nginx反向代理服務配置指令

proxy_pass指令

proxy_pass指令用來設定被代理伺服器的地址,可以是主機名稱、IP地址加埠號形式等

proxy_pass URL;

proxy_hide_header指令

proxy_hide_header指令用於設定Nginx伺服器在傳送HTTP響應時,隱藏一些頭域資訊

proxy\_hide_header field

proxy_pass_header指令

proxy_pass_header指令用於設定那些頭域資訊被髮送

proxy\_hide_header field

proxy_pass_header指令

proxy_pass_header指令用於設定那些頭域資訊被髮送

proxy\_hide_header field

Nginx反向代理服務-負載均衡

一般輪詢規則的負載均衡

...
upstream backend {
    server 192.168.1.2:80;
    server 192.168.1.3:80;
    server 192.168.1.4:80;
}
server {
    listen 80;
    server_name www.mysite.name;
    index index.html index.htm;
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        ...
    }
    ...
}

加權輪詢規則的負載均衡

...
upstream backend {
    server 192.168.1.2:80 weight=5;
    server 192.168.1.3:80 weight=2;
    server 192.168.1.4:80;
}
server {
    listen 80;
    server_name www.mysite.name;
    index index.html index.htm;
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        ...
    }
    ...
}

特定資源的負載均衡

...
upstream videobackend {
    server 192.168.1.2:80;
    server 192.168.1.3:80;
    server 192.168.1.4:80;
}
upstream filebackend {
    server 192.168.1.5:80;
    server 192.168.1.6:80;
    server 192.168.1.7:80;
}
server {
    listen 80;
    server_name www.mysite.name;
    index index.html index.htm;
    location /video/ {
        proxy_pass http://videobackend;
        proxy_set_header Host $host;
        ...
    }
    location /file/ {
        proxy_pass http://filebackend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        ...
    }
    ...
}

對不同域名實現負載均衡

...
upstream bbsbackend{
    server 192.168.1.2:80 weight=2;
    server 192.168.1.3:80 weight=2;
    server 192.168.1.4:80;
}
upstream homebackend {
    server 192.168.1.4:80;
    server 192.168.1.5:80;
    server 192.168.1.6:80;
}
server {
    listen 80;
    server_name home.mysite.name;
    index index.html index.htm;
    location / {
        proxy_pass http://homebackend;
        proxy_set_header Host $host;
        ...
    }
    ...
}

server {
    listen 81;
    server_name bbs.mysite.name;
    index index.html index.htm;
    location / {
        proxy_pass http://bbsbackend;
        proxy_set_header Host $host;
        ...
    }
    ...
}

帶有URL重寫的負載均衡

...
upstream backend{
    server 192.168.1.2:80;
    server 192.168.1.3:80;
    server 192.168.1.4:80;
}
server {
    listen 80;
    server_name www.mysite.name;
    index index.html index.htm;
    location /file/ {
        rewrite ^(/file/.*)/media/(.*)\.*$ $1/mp3/$2.mp3 last;
    }

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        ...
    }
}