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