Nginx配置文件詳解

一、Nginx的配置文件的整體結構

Nginx是通過配置文件來做到各個功能的實現的。Nginx的配置文件的格式非常合乎邏輯,學習這種格式以及如何使用這種每個部分是基礎,這將幫助我們有可能手工創建一個配置文件。

其整體結構如下:


思維導圖



框架圖

從圖中我們可以看出主要包含以下幾大部分內容:
main(全局設置):設置的指令將影響其他所有設置;
server(主機設置):指令主要用于指定主機和端口、
upstream(負載均衡服務器設置):指令主要用于負載均衡,設置一系列的后端服務器
location(URL匹配特定位置的設置):用于匹配網頁位置。

這四者之間的關系式:server繼承main,location繼承server,upstream既不會繼承其他設置也不會被繼承。在這四個部分當中,每個部分都包含若干指令,這些指令主要包含Nginx的主模塊指令、事件模塊指令、HTTP核心模塊指令,同時每個部分還可以使用其他HTTP模塊指令,例如Http SSL模塊、HttpGzip Static模塊和Http Addition模塊等。

二、各部分詳解

1. 全局塊

該部分配置主要影響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的工作模式及連接數上限

2:events塊
? ??

?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。

3:http塊


A、定義MIMI-Type
如:include? mime.types;
指令格式:include file;
該指令主要用于將其他的Nginx配置或第三方模塊的配置引用到當前的主配文件中,減少主配置文件的復雜度。default_type? application/octet-stream;
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
?設置客戶端連接保持活動的超時時間。在超過這個時間之后,服務器會關閉該連接;

4、server塊

server 塊是對虛擬主機的配置,server標志定義虛擬主機開始,

A、listen用于指定虛擬主機的服務端口,
B、server_name 用來指定IP地址或域名,多個域名之間用空格分開。
C、index用于設定訪問的默認首頁地址.。
D、root指令用于指定虛擬主機的網頁根目錄,這個目錄可以是相對路徑,也可以是絕對路徑。
E、charset用于設置網頁的默認編碼格式。
F、access_log 用來指定虛擬主機的訪問日志存放路徑,最后的main 用于指定訪問日志的輸出格式。

5.location塊

URL地址匹配是進行Nginx配置中最靈活的部分。 location支持正則表達式匹配,也支持條件判斷匹配,用戶可以通過location指令實現Nginx對動、靜態網頁進行過濾處理。使用location URL匹配配置還可以實現反向代理,用于實現PHP動態解析或者負載負載均衡。


a、location配置
b、請求根目錄配置
c、更改location的URI
d、網站默認首頁配置

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容