收藏本站

電腦請使用 Ctrl + D 加入最愛
手機請使用 收藏
關閉

小編的世界 優質文選 主機

適用於開發人員的Nginx秘籍


字體大小:
2021年6月30日 -
:     
 

蟲蟲搜奇

優質科技領域創作者

要問目前哪個Web服務器最流行,可能大家都會說是Nginx。這個老毛子開發的神器憑借高性能了、友好的配置、優秀的模塊機制,反向代理支持迅速占領市場並走上Web服務器市場的No1. 本文我們就來談談對於開發人員來說Nginx的一些妙用方法。

從這個簡單的配置,我們可以開始構建必要的複雜性。

主動/被動代理配置

如果服務需要以一台服務器為主的主動/被動配置 對於請求處理,將一個後端服務器做備份,配置方法如下:

upstream backend {

server job:10000;

server backup:10000

backup;

}

Backup選項指示,表示nginx將使用該服務器為備用服務器,只有當主服務器(job:10000)不可用時候,才會代理到backup:10000。

默認情況下,服務器在1次連接錯誤或超時後標記為不可用。但是該閾值可以通過max_fails來配置:

upstream backend {

# 主服務器失敗嘗試3次

server job:10000 max_fails=3;

# 備用服務器嘗試失敗次數10

server backup:10000 backup max_fails=10;

}

除了連接錯誤和超時,還可以使用HTTP 狀態碼,比如500,502等來定義不可用狀態。該配置,由

proxy_next_upstream語句定義。

upstream backend {

server job:10000;

server backup:10000 backup;

}

server {

server_name proxy;

listen 8000;

# 在連接錯誤,超時或者http 429(請求超出)的時候時候,跳轉到下一個pstream。

proxy_next_upstream error timeout

http_429;

location / {

proxy_pass http://backend;

}

}

代理K8s服務

如果要代理K8s集群服務,由於其自帶負載均衡配置中應該設置max_fails=0,以免踢掉正常的服務器:

upstream backend {

server cck8s.svc max_fails=0;

}

這樣nginx就不會將 K8s服務標記為不可用。即不會去嘗試做被動健康檢查,直接利用的K8s集群的主動健康檢查。

靈活的路由 map

有時需要根據某些HTTP標頭值路由請求。比如查詢範圍、cookie值或、主機名或者他們的任意組合。這是Nginx最強大的地方,其他同類的代理基本上都做不到這一點。Nginx請求路由的關鍵是ngx_http_map_module。該模塊允許從組合中定義變量帶有正則表達式的變量。假設微服務架構中有3個後端服務來處理不同類型的數據:

返回剛剛收集的最新數據的實時數據服務。

返回舊數據的歷史數據服務。

返回預先計算的數據的聚合數據服務。

這些服務通過相同的接口提供用戶服務,接口形式如下

<date>.cc.api/?report=<report>

現在有幾個用戶用例:

location /v1/api {

proxy_pass http://prod.cc.api.consul/;

}

location /v1/rpc {

proxy_pass http://prod.rpc.service.consul/;

}

}

結論

Nginx 是一個非常通用的工具。
它有豐富的配置語言為開發人員提供不錯的功能。比如具有配置故障轉移的主動/被動負載平衡、靈活的請求路由與Consul DNS 輕松集成等。雖然有些配置比較醜,甚至使用了可怕的正則,但是這也許就是他的魅力所在吧。

  大家在看    
可容納45萬台服務器,電信江北數據中心(儀征園區

可容納45萬台服務器,電信江北數據中心(儀征園區

夢幻西遊:新手服是被玩家忽略的特殊服務器,能刷免

夢幻西遊:新手服是被玩家忽略的特殊服務器,能刷免

騰訊雲香港雲服務器穩定性怎麼樣現身說法

騰訊雲香港雲服務器穩定性怎麼樣現身說法

魔獸世界懷舊服:同是灰燼使者服務器,TBC排隊過

魔獸世界懷舊服:同是灰燼使者服務器,TBC排隊過

技嘉發布G242-Z11高性能計算服務器新品了

技嘉發布G242-Z11高性能計算服務器新品了

夢幻西遊:夢幻第一個280比例的三年外服務器,不

夢幻西遊:夢幻第一個280比例的三年外服務器,不

玩風暴英雄進不去服務器怎麼辦?賽博加速器幫你解決

玩風暴英雄進不去服務器怎麼辦?賽博加速器幫你解決

不需要服務器,使用GitHub和Gridea搭建

不需要服務器,使用GitHub和Gridea搭建

彈幕更爽直播更穩!騰訊雲推出超高性能的第六代10

彈幕更爽直播更穩!騰訊雲推出超高性能的第六代10

小破站服務器半夜崩潰,各種熱搜霸占微博,看到蒙古

小破站服務器半夜崩潰,各種熱搜霸占微博,看到蒙古