以下內(nèi)容涉及到Nginx的安裝與配置,大家可以通過詳細(xì)的安裝說明來進(jìn)行學(xué)習(xí)。
下載與安裝Nginx
Nginx的官方網(wǎng)站是http://sysoev.ru/nginx/,英文主頁為http://nginx.net,從這里可以獲得Nginx的最新版本信息。Nginx有三個(gè)版本:穩(wěn)定版、開發(fā)版和歷史穩(wěn)定版。開發(fā)版更新較快,包含最新的功能和bug的修復(fù),但同時(shí)也可能會(huì)出現(xiàn)新的bug。開發(fā)版一旦更新穩(wěn)定下來,就會(huì)被加入穩(wěn)定版分支中。然而有些新功能不一定會(huì)被加到穩(wěn)定版中去。穩(wěn)定版更新較慢,但是bug較少,可以作為生產(chǎn)環(huán)境的首選,因此通常建議使用穩(wěn)定版。歷史穩(wěn)定版為以往穩(wěn)定版本的匯總,不包含最新的功能。
這里選擇當(dāng)前的穩(wěn)定版本nginx-0.7.65作為介紹對(duì)象,開始介紹編譯安裝。在安裝Nginx之前,確保系統(tǒng)已經(jīng)安裝了gcc、openssl-devel、pcre-devel和zlib-devel軟件庫。
Linux開發(fā)庫是在安裝系統(tǒng)時(shí)通過手動(dòng)選擇安裝的,gcc、openssl-devel、zlib-dcvel三個(gè)軟件庫可以通過安裝光盤直接選擇安裝,而pcre-devel庫默認(rèn)不在系統(tǒng)光盤中,所以這里重點(diǎn)介紹pcre-devel庫。
1.安裝Nginx所需的pcre-devel庫
安裝pcre庫是為了使Nginx支持HTTP Rewrite模塊。下面進(jìn)行安裝,過程如下:
[ root@localhost home] # tar zxvf pcre-8.02.tar.gz
[ root@localhost home] # cd pcre-8.02
[ root@localhost pcre-8.02J # . /configure
[ root@localhost pcre-8.02J #make
[ root@localhost pcre-8.02] #make install
2.開始安裝Nginx
Nginx酌安裝非常簡單。在默認(rèn)情況下,經(jīng)過編譯安裝的Nginx包含了大部分可用模塊。可以通過“./configure --help”選項(xiàng)設(shè)置各個(gè)模塊的使用情況,例如對(duì)不需要的http_ssi模塊,可通過“--without-http_ssi_module”方式關(guān)閉此。同理,如果需要“http_perl“”模塊,那么可以通過“-with-http_perl_module”方式進(jìn)行安裝。下面是安裝過程:
[root@localhost home] # tar zxvf nginx-0.7.65.tar.gz
[root@localhost home] #cd nginx-0.7.65
[root@localhost nginx-0.7.65] # ./conf igure /
-with-http_stub_status module --prefix=/opt/nginx
[root@localhost nginx-0.7.65J #make
[root@localhost nginx-O.7.65J #make install
在上面的configure選項(xiàng)中,“--with-http_stub_status_module”可以用來啟用Nginx的NginxStatus功能,以監(jiān)控Nginx的當(dāng)前狀態(tài)。
至此,Nginx已經(jīng)安裝完成了。
Nginx配置文件的結(jié)構(gòu)
Nginx的配置文件是一個(gè)純文本文件,它一般位于Nginx安裝目錄的conf目錄下,整個(gè)配置文件是以block的形式組織的。每個(gè)block一般以一個(gè)大括號(hào)“{}"來表示,block可以分為幾個(gè)層次,整個(gè)配置文件中main指令位于最高層,在main層下面可以有Events、HTTP等層級(jí),而在HTTP層中又包含有server層,即server block,server block中又可分為location層,并且一個(gè)server block中可以包含多個(gè)location block。
一個(gè)完整的配置文件結(jié)構(gòu)如圖1-2所示。
圖1-2 Nginx配置文件結(jié)構(gòu)
在了解完配置文件結(jié)構(gòu)之后,就可以開始配置和調(diào)試Nginx了。
配置與調(diào)試Nginx
Nginx安裝完畢后,會(huì)產(chǎn)生相應(yīng)的安裝目錄,根據(jù)前面的安裝路徑,Nginx的配置文件路徑為/opt/nginx/conf,其中nginx.conf為Nginx的主配置文件。這里重點(diǎn)介紹nginx.conf這個(gè)配置文件。
Nginx配置文件主要分為4部分:main(全局設(shè)置)、server(主機(jī)設(shè)置)、upstream(負(fù)載均衡服務(wù)器設(shè)置)和location(URL匹配特定位置的設(shè)置)。main部分設(shè)置的指令將影響其他所有設(shè)置:server部分的指令主要用于指定主機(jī)和端口;upstream指令主要用于負(fù)載均衡,設(shè)置一系列的后端服務(wù)器:location部分用于匹配網(wǎng)頁位置。這四者之間的關(guān)系如下:server繼承main.location繼承server,upstream既不會(huì)繼承其他設(shè)置也不會(huì)被繼承。
在這4個(gè)部分當(dāng)中,每個(gè)部分都包含若干指令,這些指令主要包含Nginx的主模塊指令、事件模塊指令、HTTP核心模塊指令。同時(shí)每個(gè)部分還可以使用其他HTTP模塊指令,例如Http SSL模塊、Http Gzip Static模塊和Http Addition模塊等。
下面通過一個(gè)Nginx配置實(shí)例,詳細(xì)介紹nginx.conf每個(gè)指令的含義。為了能更清楚地了解Nginx的結(jié)構(gòu)和每個(gè)配置選項(xiàng)的含義,這里按照功能點(diǎn)將Nginx配置文件分為7個(gè)部分依次講解。下面就圍繞這7個(gè)部分進(jìn)行介紹。
1.Nginx的全局配置
下面這段內(nèi)容是對(duì)Nginx的全局屬性配置,代碼如下:
user nobody nobody;
worker_processes 4;
error_log logs/error.log notice;
pid logs/nginx.pid;
worker_rlimit_nofile 65535;
events{
use epoll;
worker_connections 65536;
}
上面這段代碼中每個(gè)配置選項(xiàng)的含義解釋如下:
口user是個(gè)主模塊指令,指定Nginx Worker進(jìn)程運(yùn)行用戶以及用戶組,默認(rèn)由nobody賬號(hào)運(yùn)行。
口worker_processes是個(gè)主模塊指令,指定了Nginx要開啟的進(jìn)程數(shù)。每個(gè)Nginx進(jìn)程平均耗費(fèi)1OMB~12MB內(nèi)存。根據(jù)經(jīng)驗(yàn),一般指定一個(gè)進(jìn)程足夠了,如果是多核CPU,建議指定和CPU的數(shù)量一樣多的進(jìn)程數(shù)即可。
口error_log是個(gè)主模塊指令,用來定義全局錯(cuò)誤日志文件。日志輸出級(jí)別有debug、info、notice、warn、error、crit可供選擇,其中,debug輸出日志最為最詳細(xì),而crit輸出日志最少。
口pid是個(gè)主模塊指令,用來指定進(jìn)程id的存儲(chǔ)文件位置。
口worker_rlimit_nofile用于綁定worker進(jìn)程和CPU,Linux內(nèi)核2.4以上可用。
口events指令用來設(shè)定Nginx的工作模式及連接數(shù)上限。
口use是個(gè)事件模塊指令,用來指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是標(biāo)準(zhǔn)的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平臺(tái)上,而kqueue用在BSD系統(tǒng)中。對(duì)于Linux系統(tǒng),epoll工作模式是首選。
口worker_connections也是個(gè)事件模塊指令,用于定義Nginx每個(gè)進(jìn)程的最大連接數(shù),默認(rèn)是1024。最大客戶端連接數(shù)由worker_processes和worker_connections決定,即max_client=worker_processes*worker_connections,在作為反向代理時(shí)變?yōu)椋簃ax_clients=worker_processes*worker_connections/4。
進(jìn)程的最大連接數(shù)受Linux系統(tǒng)進(jìn)程的最大打開文件數(shù)限制,在執(zhí)行操作系統(tǒng)命令“ulimit -n 65536"后worker_connections的設(shè)置才能生效。
新聞熱點(diǎn)
疑難解答
圖片精選