從乙個初學者的角度窺探Nginx

2022-01-29 15:28:51 字數 3979 閱讀 4405

#}}完整的nginx配置檔案是由六大部分組成:

}}main 模組

全域性設定填寫 nginx 的全域性配置,在此區域填寫的內容會員應用到 nginx 的全域性。

常用的全域性配置:

示例如下:

# 定義 nginx 執行的使用者和使用者組

user nobody root;

# nginx 程序數(建議為 cpu 總核數,或者設定為 auto)

worker_precesses 8;

# 定義全域性錯誤日誌型別

error_log /var/log/nginx/error.log info;

#程序檔案

pid /var/run/nginx.pid;

# 乙個 nginx 程序最多可以開啟的檔案描述數目(建議與 ulimit -n 的值保持一致)

worker_rlimit_nofile 65535;

注:一般而言,此處的全域性配置都可以保留預設設定(即什麼都不用寫)。

events 模組

用來指定 nginx 的工作模式和單個程序的連線數上限。示例如下:

events
注:上述程序的最大連線數受 linux 系統程序的最大開啟檔案數的限制,只有在執行作業系統命令 [# ulimit -n 65536]後 worker_connections 的設定才能生效。

http 模組

示例如下:

}server 模組

server 模組是 http 的子模組,它可以定義乙個虛擬主機,server {} 表示虛擬主機的配置範圍。示例如下:

server 

}

location 模組

location 模組是 nginx 中可自定義程度最高的模組,location 如同它的名字一樣是用來定位解析 url 的,通過正則匹配,使用者可以通過 location 指令實現對網頁的各種處理。示例如下:

location /
具體可檢視:nginx簡單配置與使用

upstream模組

upstream模組又稱為負載均衡模組。示例如下:

upstream example.com
example.com表示通過 upstream 指令定義了乙個負載均衡的名稱 。(名稱可以任意指定,不一定是乙個網域名稱)

fair是一種負載均衡排程演算法。

down表示該 server 不參與負載均衡。

backup表示預留的備份機器,只有當其他所有非 backup 機器出現故障或異常忙碌是,才會請求 backup 機器,所以這台機器的負載壓力很小。

max_fails表示允許請求失敗的次數(預設為1次),當超過最大次數時返回 proxy_next_upstream 模組定義的錯誤。

fail_timeout表示在經歷 max_fails 次失敗後暫停服務的時間。

max_conns表示限制分配個後端伺服器處理的最大連線數量,超過這個數量,將不會分配新的連線給它。

官網配置說明文件:

目前 nginx 負載均衡模組共有4中排程演算法。

權重輪詢

weight輪詢每乙個請求按照請求的時間順序逐一分配到不同的後端伺服器,如果後端某台伺服器宕機,nginx 輪詢列表將自動去除該伺服器,使使用者訪問不受影響。

weight 用於指定輪詢權值,weight 值越大,分配到訪問的概率越高,主要用於後端伺服器效能不均的情況。

weight 輪詢是 nginx 的預設排程演算法

示例配置如下:

upstream upstream.example.com 

server

}

此負載均衡配置的作用:(重啟 nginx:nginx -s reload)每次重新整理頁面,頁面的請求會分別傳送到前三颱伺服器,第四臺是備份伺服器,其中 第三台處理的請求最多,因為它的權重最大。

ip 雜湊

ip_hash根據 hash 演算法對每乙個請求中的訪問 ip 進行處理。使來自同乙個 ip 的訪客固定訪問乙個後端伺服器。

這種方式可以簡單而有效的解決動態網頁存在的會話(session)共享問題。

示例配置如下:

upstream upstream.example.com
fair 排程

fair比前面兩種更智慧型。這個演算法可以根據頁面的大小和載入時間的長短智慧型地進行負載均衡。

簡單來說,就是根據後端伺服器的響應時間來分配請求,響應時間短的優先分配。

[root@vm_0_6_centos local]# wget 

[root@vm_0_6_centos local]# unzip master.zip

重新編譯 nginx,將 fair 模組新增到編譯引數。進入到 nginx 原始碼目錄下

url 雜湊

url_hash根據 hash 演算法對每個請求中的訪問 url 進行處理,使來自同乙個 url 的請求固定定向到同乙個後端伺服器,這樣可以提高後端快取伺服器的效率。

示例配置如下:

upstream upstream.example.com
==未完待續==

如何從乙個初學者成乙個DBA

oracle的體系太龐大了,對於初學者來說,難免會有些無從下手的感覺,什麼都想學,結果什麼都學不好,所以把學習經驗共享一下,希望讓剛剛入門的人對oracle有乙個總體的認識,少走一些彎路。一 定位 oracle分兩大塊,一塊是開發,一塊是管理。開發主要是寫寫儲存過程 觸發器什麼的,還有就是用orac...

乙個初學者的RHCE之路

乙個初學者的rhce之路 1 認清你的考試目的,rhce對於初學者來說是很難的,所以我不建議沒有準備好就報考rhce,雖然我也是如此。因為此考試通過率底,靈活性大,我見過的從事linux工作的 十分牛x的人物,考兩次都沒有通過的。所以一定要明確你自己的目的,是要從事linux工作,尤其是linux網...

乙個初學者該如何學習核心

乙個初學者該如何學習核心?第一步 先會使用它。連linux 是什麼 基本操作都不會就去研究核心,純屬扯淡,門 都沒有。第二步 看懂核心原始碼需要一些作業系統 c 語言等的基礎。第三步 找本合適的核心參考書,讓它幫助你對核心有個整體的理解和認識,第四步 要能夠動手配置編譯核心,還要基本看得懂核心中的k...