1、環境
Centos6
軟體包安裝:
[root@test /]#yum -y install gcc openssl-devel zlib-devel pcre-devel
說明:pcre庫是為了使Nginx支援HTTP Rewrite子產品
2、開始安裝Nginx
預設情況下,經過編譯安裝的Nginx 包含了大部分可用子產品。可以通過“./configure --help”選項設定各個子產品的使用情況,對不需要的http_ssi子產品,通過“--without-http_ssi_module”方式關閉。如果需要“http_perl”子產品,通過“--with-http_perl_module”方式進行安裝。
[root@test /]# cd /soft
[root@test soft]# ls
nginx-1.2.7.tar.gz
[root@test soft]# tar -xzvf nginx-1.2.7.tar.gz
[root@test soft]# ls
nginx-1.2.7 nginx-1.2.7.tar.gz
[root@test soft]# ln -s nginx-1.2.7 nginx
nginx nginx-1.2.7 nginx-1.2.7.tar.gz
[root@test soft]# cd nginx
[root@test nginx]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
[root@test nginx]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module
[root@test nginx]# make
[root@test nginx]# make install
說明:在configure選項中,“--weith-http_stub_status_module”用來啟用Nginx的NginxStatus功能,以監控Nginx的目前狀态。
3、Nginx配置檔案的結構
Nginx 的配置檔案是一個純文字檔案,位于Nginx 安裝目錄conf 目錄下,整個配置檔案是以block 的形式組織的。每個block 一般以一個大括号“{}”來表示,block
可以分為幾個層次,整個配置檔案中main 指令位于最高層,在main 層下面可以有Events、HTTP 等層級,而HTTP 層中又包含有server 層,即server block,server block 又可分為location 層,并且一個server block 中可以包含多個location block。

4、配置與調試Nginx
Nginx的配置路徑為/usr/local/nginx/conf,其中nginx.conf為Nginx的主配置檔案。
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指令的含義。
1、Nginx的全局配置
Nginx的全局屬性配置:
user nobody nobody;
#主子產品指令,指定Nginx Worker程序運作使用者以及使用者組,預設nobody運作
worker_processes 1;
#主子產品指令,指定Nginx開啟的程序數
error_log logs/error.log notice;
#主子產品指令,定義全局錯誤日志檔案。日志輸出級别有debug、info、notice、warn、error、crit,其中,debug輸出日志最詳細,而crit輸出日志最少
pid logs/nginx.pid;
#主子產品指令,指定程序id的存儲檔案位置
worker_rlimit_nofile 65536;
#綁定worker程序和CPU
events{
#events指令用來設定Nginx的工作模式及連接配接數上限
use epoll;
#use是個事件子產品指令,指定Nginx的工作模式。Nginx支援工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll是标準的工作模式,kqueue和epoll是高效的工作模式,epoll用在Linux平台,kqueue用在BSD平台。Linux平台,epoll工作模式是首選。
worker_connections 65536;
#worker是個事件子產品指令,定義Nginx每個程序的最大連接配接數,預設是1024。最大用戶端連接配接數由worker_processes和worker_connections決定,即max_client=worker_processes*worker_connections,作為反向代理時:max_client=worker_processes*worker_connections/4。程序最大連接配接數受Linux系統程序的最大打開檔案數限制,執行作業系統指令“ulimit -n 65536”後worker_connections設定才能生效
}
2、HTTP伺服器配置
Nginx對HTTP伺服器的相關屬性的配置:
http{
include mime.types;
#主子產品指令,實作對配置檔案所包含的檔案設定,可以減少主配置檔案的複雜度。
default_type application/octet-stream;
#屬于HTTP核心子產品指令,預設類型為二進制流
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
' "$http_user_agent" "$http_x_forwarded_for" ';
access_log logs/access.log main;
#Nginx的HttpLog子產品指令,指定Nginx日志的輸出格式。main為日志輸出格式的名稱,可以在access_log指令中引用
sendfiles on;
#用于開啟高效檔案傳輸模式
tcp_nopush on;
#用來防止網絡阻塞
keepalive_timeout 65;
#設定用戶端請求頭讀取逾時時間
}
3、HttpGzip子產品配置
Nginx的HttpGzip子產品。這個子產品支援線上實時壓縮輸出資料流。檢視是否安裝此子產品:
[root@test conf]# /usr/local/nginx/sbin/nginx -V
gzip on;
#設定開啟或者關閉gzip子產品,“gzip on”表示開啟gzip壓縮,實時壓縮輸出資料流
4、server虛拟主機配置
虛拟主機配置。
server{
listen 80;
#指定虛拟主機的伺服器端口
server_name 192.168.1.119 test;
#指定IP位址或者域名,多個域名之間用空格分開
charset gb2312;
#設定網頁的預設編碼格式
access_log logs/test.access.log main;
#指定此虛拟主機的通路日志存放路徑。main用于指定通路日志的輸出格式
location / {
root web;
#root用于指定虛拟主機的網頁根目錄,目錄可以是相對路徑,也可以是絕對路徑
index index.html index.htm;
#index用于設定通路的預設首頁位址
}
error_page 404 /404.html;
#定制各種錯誤資訊的傳回頁面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
5、URL比對配置
URL位址比對是Nginx配置中最靈活的部分。location支援正規表達式比對,也支援條件比對,可以通過location指令實作Nginx對動、靜态網頁的過濾處理。
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
root html;
expires 30d;
}
#這段是通過location指令對網頁URL進行分析處理,所有擴充名.gif、.jpg、.jpeg 、.png、 .bmp 、.swf的靜态檔案都交給Nginx處理,而expires指定靜态檔案的過期時間
location ~ ^/(upload|html)/ {
root web;
expires 30d;
}
#這段設定是将upload和html下的所有檔案都交給Nginx處理,upload和html目錄包含在web目錄中
location ~ .*.jsp$ {
index index.jsp;
proxy_pass http://localhost:8080;
}
#這段設定中,location是對此虛拟主機下動态網頁的過濾處理,将所有以.jsp為字尾的檔案都交給本機的8080端口處理
5、Nginx啟動、關閉和重新開機
1、Nginx基本資訊檢查
檢查Nginx配置檔案的正确性
/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
#“-t”參數用于檢查配置檔案是否正确,但不執行,“-c”參數用于指定配置檔案路徑
2、顯示Nginx的版本以及編譯資訊
/usr/local/nginx/sbin/nginx -v
#顯示安裝Nginx的版本資訊
/usr/local/nginx/sbin/nginx -V