Nginx常見配置
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常見配置