其整體結構如下:
從圖中我們可以看出主要包含以下幾大部分內容:
main(全域性設定):設定的指令將影響其他所有設定;
server(主機設定):指令主要用於指定主機和埠、
upstream(負載均衡伺服器設定):指令主要用於負載均衡,設定一系列的後端伺服器
location(url匹配特定位置的設定):用於匹配網頁位置。
這四者之間的關係式:server繼承main,location繼承server,upstream既不會繼承其他設定也不會被繼承。在這四個部分當中,每個部分都包含若干指令,這些指令主要包含nginx的主模組指令、事件模組指令、http核心模組指令,同時每個部分還可以使用其他http模組指令,例如http ssl模組、httpgzip static模組和http addition模組等。
該部分配置主要影響nginx全域性,通常包括下面幾個部分:
a、配置執行nginx伺服器使用者(組)
如:user nobody nobody;user是個主模組指令,指定nginx worker程序執行以及使用者組。
指令格式:user user [group];
user
:指定可以執行nginx伺服器的使用者;group:可選項,可以執行nginx伺服器的使用者組。
如果user指令不配置或者配置為user nobody nobody,預設由nobody賬戶執行。
b、worker process數
如:worker_processes 2;woker_processes是個主模組指令,制定了nginx要開啟的程序數。每個nginx程序平均耗費10m~12m記憶體。建議指定和cpu的數量一致即可。
nginx伺服器實現併發處理服務的關鍵。
指令格式:worker_processes number | auto;
number : nginx
程序最多可以產生的worker process 數。
auto
: nginx 程序將自動檢測
在按照上面的配置格式配置了之後,假如上面的數目是2,那麼啟動nginx伺服器後,在後台主機上檢視nginx的程序情況,可以看到應該是有2個nginx程序。
c、錯誤日誌的存放路徑
如:error_log logs/error.log notice;error_log 是個主模組指令,用來定義全域性錯誤日誌檔案。日誌輸出級別有debug,info,notice,warn,error,erit可供選擇,其中,debug輸出日誌最為詳細,而crit輸出日誌最少。
指定格式:error_log file | stderr;
file :
日誌輸出到某個檔案file
stderr :
日誌輸出到標準錯誤輸出 (日誌輸出級別)。
d、nginx程序pid存放路徑
如:pid logs/nginx.pid;pid是個主模組指令,用來指定程序pid的儲存檔案位置。
nginx程序是作為系統守護程序在進行,需要在某個檔案中儲存當前執行程式的主程序號,nginx支援該儲存檔案路徑的定義。
指令格式:pid file;
file
:指定存放路徑和檔名稱。
如果不指定,則預設置於路徑 logs/nginx.pid
e、worker_rlimit_nofile
如:worker_rlimit_nofile 65535;用來繫結worker程序和cpu,linux核心2.4 以上可用
指定程序可以開啟的最多檔案描述數目,理論值應該是最多開啟檔案數(ulimit -n )與nginx程序數相除,但是nginx分配請求並不是那麼均勻,所以最好與ulimit -n 的值保持一致。
現在在linux2.6 核心下開啟檔案開啟數為65535,worker_rlimit_nofile 就相應應該填寫65535.這是因為nginx排程時請求到程序並不是那麼均衡,所以假如填寫10240,總併發量達到3-4萬時就有程序超過10240了,這就會返回502。
events 事件指令是設定nginx的工作模式及連線數上限
events事件指令是設定nginx的工作模式及連線數上限。每個配置選項的含**釋如下:
a、use
如:use epoll;
use是事件模組指令,用來指定nginx的工作模式。nginx支援的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll 。其中select 和poll 都是標準的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在linux平台上,而kqueue用在bsd系統中。對於linux系統,epoll工作模式是首選。 b
、worker_connections
如:worker_connections65536;
work_connections
也是個事件模組指令,用於定義nginx每個程序的最大連線數,預設是1024。
a、定義mimi-type
如:include mime.types;
指令格式:include file;
default_type
屬於http核心模組指令,這裡設定預設型別為二進位製流。也就是當檔案型別未定義時使用這種方式,
b、自定義服務日誌
log_format 是nginx的httplog模組指令,用於指定nginx日誌的輸出日誌。當然其中還有更為詳細的配置,但是這裡只做大略的研究學習,不過分深入細節。
c、允許sendfile方式傳輸檔案
指令格式:sendfile on;
這個指令中的引數on是表示開啟高效檔案傳輸模式,預設是關閉狀態(off),將tcp_nopush和tcp_nodelay兩個指令設定為on用於防止網路阻塞;
d、連線超時時間
指令格式:keepalive_timeout number;
如:keepalive_timeout 65;
keepalive_timeout
設定客戶端連線保持活動的超時時間。在超過這個時間之後,伺服器會關閉該連線;
server 塊是對虛擬主機的配置,server標誌定義虛擬主機開始,
a、listen用於指定虛擬主機的服務埠,
b、server_name 用來指定ip位址或網域名稱,多個網域名稱之間用空格分開。
c、index用於設定訪問的預設首頁位址.。
d、root指令用於指定虛擬主機的網頁根目錄,這個目錄可以是相對路徑,也可以是絕對路徑。
e、charset用於設定網頁的預設編碼格式。
f、access_log 用來指定虛擬主機的訪問日誌存放路徑,最後的main 用於指定訪問日誌的輸出格式。
url位址匹配是進行nginx配置中最靈活的部分。 location支援正規表示式匹配,也支援條件判斷匹配,使用者可以通過location指令實現nginx對動、靜態網頁進行過濾處理。使用location url匹配配置還可以實現反向**,用於實現php動態解析或者負載負載均衡。
a、location配置
b、請求根目錄配置
c、更改location的uri
d、**預設首頁配置
NGINX 使用說明
nginx在centos上操作有關命令,以前的啟動方法無法實現 services nginx start or systemctl start nginx 1.查詢安裝路徑 whereis nginx2.執行啟動命令 nginx 啟動 nginx s stop 停止 nginx s quit ngi...
Nginx 使用說明02
上文簡單介紹了一下nginx,本文說一下其實現.想要通過nginx實現反向 主要需要進行conf目錄下nginx.conf檔案的配置 nginx 需要使用http https協議的 我們主要設定的就是server,乙個server代表乙個服務,多個服務我們就要配置多個server.上述 可是實現乙個...
Nginx 架構說明 配置使用實踐
nginx 安裝 nginx 架構說明 nginx實踐 略nginx 架構圖 架構說明 1 nginx啟動時,會生 不處理網路請求,主要負責排程工作程序,也就是圖示的三項 載入配置 啟動工作程序及非停公升級。所以,nginx啟動以後,檢視作業系統的程序列表,我們就能看到至少有兩個nginx程序。2 ...