天天看點

nginx學習(2):啟動gzip、虛拟主機、請求轉發、負載均衡

nginx學習(2):啟動gzip、虛拟主機、請求轉發、負載均衡

nginx 啟動gzip、虛拟主機、請求轉發、負載均衡 等場景的配置示例

一、啟用gzip

nginx學習(2):啟動gzip、虛拟主機、請求轉發、負載均衡

View Code

将上面這段放在nginx.conf檔案 http{...}之間即可

二、虛拟主機

nginx學習(2):啟動gzip、虛拟主機、請求轉發、負載均衡
nginx學習(2):啟動gzip、虛拟主機、請求轉發、負載均衡

這裡配置了二個虛拟主機,分别綁定到域名www.aaa.com及www.bbb.com

三、請求轉發

nginx學習(2):啟動gzip、虛拟主機、請求轉發、負載均衡

如上圖,為了安全起見,通常會把真正的web 應用伺服器放在内網,不允許外界直接通路,這時可利用nginx的反向代理将請求轉到内部伺服器

nginx學習(2):啟動gzip、虛拟主機、請求轉發、負載均衡
nginx學習(2):啟動gzip、虛拟主機、請求轉發、負載均衡

這樣,通路 http://www.aaa.com/home/index.aspx 就相當于通路http://192.168.1.201:8080/home/index.aspx

有些時候,我們希望将共用的靜态資源(比如:jquery,共用css),直接放在nginx下,背後的web app server,隻處理動态資源(比如:.aspx/.do/.jsp),可以改進一下:

nginx學習(2):啟動gzip、虛拟主機、請求轉發、負載均衡
nginx學習(2):啟動gzip、虛拟主機、請求轉發、負載均衡

這樣,通路http://www.aaa.com/content/site.css 實際上讀取的是R:/www/aaa.com/content/site.css 這個檔案

四、負載均衡

nginx學習(2):啟動gzip、虛拟主機、請求轉發、負載均衡

如上圖,nginx在前端利用反向代理實作軟體負載均衡,nginx不僅能實作負載均衡,當某一個node失效時,還能自動故障轉移,關鍵配置如下:

nginx學習(2):啟動gzip、虛拟主機、請求轉發、負載均衡
nginx學習(2):啟動gzip、虛拟主機、請求轉發、負載均衡

解釋一下:

第1行, proxy_connect_timeout 5;表示nginx連接配接後端伺服器時,如果超過5秒沒反應,則認為逾時

第3行,這裡定義了一組伺服器aaa_server_group,其中max_fails=1 fail_timeout=60s 表示如果該節點轉發失敗1次,接下來的60秒内,将不再轉發到這台伺服器

第6行,表示如果後端伺服器傳回502,504,逾時等錯誤時,即認為節點失效,自動将請求轉發到其它節點

nginx負載均衡的方案有好幾種,這裡我們配置為ip_hash;表示會根據用戶端的IP生成hash,固定轉發到某一台node,這樣可解決叢集環境中session丢失的問題。如果web應用中沒有使用session,去掉ip_hash;即變成輪訊方案。此外,4-6行上,還可以加weight=N來指定權重,按權重轉發,如果伺服器配置不均衡,比如某一台伺服器配置特别強,可以考慮将這台伺服器的weight值加大。

如果某台伺服器暫時不想加入負載均衡,在最後加 down即可。

最後附送一個小技巧:nginx -t 可以檢查配置檔案是否正确 

作者:菩提樹下的楊過

繼續閱讀