1. 程式人生 > >Nginx常見配置

Nginx常見配置

轉載 backup 發現 air user 反向代理 end cat 主機

特別提示:本人博客部分有參考網絡其他博客,但均是本人親手編寫過並驗證通過。如發現博客有錯誤,請及時提出以免誤導其他人,謝謝!歡迎轉載,但記得標明文章出處:http://www.cnblogs.com/mao2080/

1、配置重定向

1 server {  
2     listen  80;  
3     server_name test.com;
4     rewrite ^(.*)$  https://$host$1 permanent;  
5 }  

2、配置443端口

 1     server {
 2         listen       443 ssl;
3 server_name example.com www.example.com; 4 5 ssl_certificate /usr/local/application/cert/server.crt; 6 ssl_certificate_key /usr/local/application/cert/server.key; 7 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 8 ssl_ciphers HIGH:!aNULL:!MD5:!DH;
9 10 location / { 11 root /usr/local/application/html; 12 index index.html; 13 } 14 15 error_page 500 502 503 504 /50x.html; 16 location = /50x.html { 17 root html; 18 } 19 20 }

3、配置反向代理

  現在web的趨勢已經是動靜分離模式,比如:我們訪問http://localhost(靜態網頁),但是通常通過ajax訪問後臺接口的時候是不同端口或者ip的,這個時候會存在跨域問題,所以需要做下反向代理,比如我們請求後臺接口:http://localhost/api/userController/getList,實際上Nginx遇到/api/會將請求轉發給具體的後臺8080端口的服務並等待服務給出最終響應。

 1     server {
 2         listen       80;
 3         server_name  location;
 4 
 5         location / {
 6             root   /usr/local/application/html;
 7             index  index.html;
 8         }
 9         
10         location /api/ {
11             proxy_pass   http://localhost:8080/;
12         }
13 
14         error_page   500 502 503 504  /50x.html;
15         location = /50x.html {
16             root   html;
17         }
18 
19     }

4、配置負載均衡

  1、Nginx的upstream目前支持的分配算法一共有3種

  1)、輪詢 ——1:1 輪流處理請求(默認)
    每個請求按時間順序逐一分配到不同的應用服務器,如果應用服務器down掉,自動剔除,剩下的繼續輪詢。

 1     upstream backends {
 2         server localhost:8080;
 3         server localhost:8081;
 4     }
 5     server {
 6         listen       80;
 7         server_name  location;
 8 
 9         location / {
10             root   /usr/local/application/html;
11             index  index.html;
12         }
13         
14         location /service/ {
15             proxy_pass   http://backends/;
16         }
17 
18         error_page   500 502 503 504  /50x.html;
19         location = /50x.html {
20             root   html;
21         }
22 
23     }

  2)、權重 ——you can you up

    通過配置權重,指定輪詢幾率,權重和訪問比率成正比,用於應用服務器性能不均的情況。

1      upstream backends {
2         server localhost:8080 weight 20;
3         server localhost:8081 weight 80;
4     }

  3)、ip_hash算法
    每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個應用服務器,可以解決session共享的問題。

 1     upstream backends {
 2         ip_hash;
 3         server localhost:8080;
 4         server localhost:8081;
 5     }

2、第三方Nginx的upstream目前支持的分配算法一共有2種(目前還未驗證)

  1)fair

  fair顧名思義,公平地按照後端服務器的響應時間(rt)來分配請求,響應時間短即rt小的後端服務器優先分配請求。

1     upstream backends {
2         server localhost:8080;
3         server localhost:8081;
4         fair;
5     }

  2)url_hash

  與ip_hash類似,但是按照訪問url的hash結果來分配請求,使得每個url定向到同一個後端服務器,主要應用於後端服務器為緩存時的場景下。

1     upstream backends {
2         server localhost:8080;
3         server localhost:8081;
4         hash $request_uri;
5         hash_method crc32;
6     }

  其中,hash_method為使用的hash算法,需要註意的是:此時,server語句中不能加weight等參數。

5、其他配置

1、upstream的配置

  server address [parameters]
  address也必選,可以是主機名、域名、ip或unix socket,也可以指定端口號。
  parameters是可選參數,可以是如下參數:
    down:表示當前server已停用,暫時不參與負載。
    backup:表示當前server是備用服務器,只有其它非backup後端服務器都掛掉了或者很忙才會分配到請求。
    weight:表示當前server負載權重,權重越大被請求幾率越大。默認是1.
    max_fails和fail_timeout一般會關聯使用,如果某臺server在fail_timeout時間內出現了max_fails次連接失敗,那麽Nginx會認為其已經掛掉了,從而在fail_timeout時間內不再去請求它,fail_timeout默認是10s,max_fails默認是1,即默認情況是只要發生錯誤就認為服務器掛掉了,如果將max_fails設置為0,則表示取消這項檢查。

2、舉例說明

1     upstream backends {
2         server localhost:8080 weight=5;
3         server localhost:8081 max_fails=3 fail_timeout=30s;
4         server localhost:8082;
5         server localhost:8083;
6     }

6、參考網站

  http://www.cnblogs.com/yun007/p/3739182.html

  https://blog.csdn.net/jiangguilong2000/article/details/52278255

Nginx常見配置