NGINX與其他服務(wù)類似,因?yàn)樗哂幸蕴囟ǜ袷骄帉懙幕谖谋镜呐渲梦募?默認(rèn)情況下,文件名為nginx.conf并放在/etc/nginx目錄中(對(duì)于開源NGINX產(chǎn)品,位置取決于用于安裝NGINX和操作系統(tǒng)的軟件包系統(tǒng),它通常位于/usr/local/nginx/conf/etc/nginx或/usr/local/etc/nginx。)
配置文件由指令及其參數(shù)組成。 簡(jiǎn)單(單行)指令各自以分號(hào)結(jié)尾。 其他指令作為“容器”,將相關(guān)指令組合在一起,將其包圍在花括號(hào)({})中。 以下是簡(jiǎn)單指令的一些示例。
user nobody;
error_log logs/error.log notice;
worker_processes 1;
為了使配置更易于維護(hù),建議您將其拆分為存儲(chǔ)在/etc/nginx/conf.d目錄中的一組功能特定文件,并在主nginx.conf文件中使用include指令引用(包函)指定文件的內(nèi)容。如下所示 -
include conf.d/http;
include conf.d/stream;
include conf.d/exchange-enhanced;
幾個(gè)頂級(jí)指令(稱為上下文)將適用于不同流量類型的指令組合在一起:
指定在這些上下文之外的指令是在主上下文中。
在每個(gè)流量處理上下文中,可包括一個(gè)或多個(gè)服務(wù)器上下文來定義控制請(qǐng)求處理的虛擬服務(wù)器。 您可以在服務(wù)器環(huán)境中包含的指令根據(jù)流量類型而有所不同。
對(duì)于HTTP流量(http上下文),每個(gè)服務(wù)器指令控制對(duì)特定域或IP地址上的資源請(qǐng)求的處理。 服務(wù)器上下文中的一個(gè)或多個(gè)位置上下文定義了如何處理特定的URI集合。
對(duì)于郵件和TCP流量(mail 和 stream 上下文),服務(wù)器指令各自控制到達(dá)特定TCP端口或UNIX套接字的流量處理。
以下配置說明了上下文的使用情況。
user nobody; # a directive in the 'main' context
events {
# configuration of connection processing
}
http {
# Configuration specific to HTTP and affecting all virtual servers
server {
# configuration of HTTP virtual server 1
location /one {
# configuration for processing URIs with '/one'
}
location /two {
# configuration for processing URIs with '/two'
}
}
server {
# configuration of HTTP virtual server 2
}
}
stream {
# Configuration specific to TCP and affecting all virtual servers
server {
# configuration of TCP virtual server 1
}
}
對(duì)于大多數(shù)指令,在另一個(gè)上下文(子上下文)中定義的上下文將繼承父級(jí)中包含的偽指令的值。 要覆蓋從父進(jìn)程繼承的值,請(qǐng)?jiān)谧由舷挛闹邪撝噶睢?有關(guān)上下文遺留的更多信息,請(qǐng)參閱proxy_set_header偽指令的文檔。
要更改配置文件才能生效,NGINX必須重新加載該文件。可以重新啟動(dòng)nginx進(jìn)程或發(fā)送reload信號(hào)來升級(jí)配置,而不會(huì)中斷當(dāng)前請(qǐng)求的處理。