本文所介紹的環(huán)境是:
操作系統(tǒng):CenOS-7-x86_64
環(huán)境:虛擬機(jī)
Nginx 版本:1.6.3
一堰燎、Nginx服務(wù)器安裝文件的獲取
1.1 獲取新版本的 Nginx 服務(wù)器
Nginx 的官方下載地址為:http://nginx.org/en/download.html安皱。打開后如下圖所示:
網(wǎng)頁上提供了Nginx 服務(wù)器三種版本的下載,分別是開發(fā)版(Mainline version)荸实、穩(wěn)定版本(Stable version)和過期版本(Legacy versions)搏熄。
頁面上下載部分各鏈接的具體含義:
“CHANGES-x.xx”鏈接,記錄的是對應(yīng)版本的功能變更日志生巡。包括新增功能、功能的優(yōu)化和功能缺陷的修復(fù)等见妒。
緊接著“CHANGES-x.xx”鏈接后面的“nginx-x.x.x”鏈接孤荣,是 Nginx服務(wù)器的 Linux版本下載地址。
“pgp”鏈接须揣,記錄的是提供下載的版本使用PGP加密自由軟件GnuPG計(jì)算后的簽名盐股。PGP可以理解為Pretty Good Privacy。這些數(shù)據(jù)可以用于下載文件的驗(yàn)證返敬。
“nginx/Windows-x.x.x”鏈接遂庄,是 Nginx 服務(wù)器的Windows版本下載地址。
1.2 獲取歷史版本的 Nginx 服務(wù)器
下載 Nginx服務(wù)器全部歷史版本的鏈接:http://nginx.org/download/
二劲赠、安裝 Nginx 服務(wù)器和基本配置
2.1 Linux 版本的編譯和安裝:準(zhǔn)備工作
在線安裝所需工具:
yum -y install gcc gcc-c++ automake pcre pcre-devel zlib zlib-devel open openssl-devel
2.2 Linux版本的編譯和安裝:Nginx 軟件的自動腳本
為了方便管理和使用,我們在文件系統(tǒng)的“/app/”目錄下新建nginx-1.6.3目錄秸谢,最后會把編譯好的Nginx安裝到此目錄中凛澎。同時,在此目錄中新建nginx-1.6.3-compile估蹄,用來編譯Nginx 軟件塑煎。將下載好的nginx-1.6.3.tar.gz文件復(fù)制到對應(yīng)目錄。解壓下載包臭蚁,得到Nginx軟件安裝包的所有資源:
[root@localhost nginx-1.6.3]# tar xf nginx-1.6.3.tar.gz
[root@localhost nginx-1.6.3]# cd nginx-1.6.3
[root@localhost nginx-1.6.3]# ls -l
總用量 604
drwxr-xr-x. 6 1001 1001 4096 1月 19 14:34 auto
-rw-r--r--. 1 1001 1001 236608 4月 7 2015 CHANGES
-rw-r--r--. 1 1001 1001 360501 4月 7 2015 CHANGES.ru
drwxr-xr-x. 2 1001 1001 168 1月 19 14:34 conf
-rwxr-xr-x. 1 1001 1001 2369 4月 7 2015 configure
drwxr-xr-x. 4 1001 1001 72 1月 19 14:34 contrib
drwxr-xr-x. 2 1001 1001 40 1月 19 14:34 html
-rw-r--r--. 1 1001 1001 1397 4月 7 2015 LICENSE
drwxr-xr-x. 2 1001 1001 21 1月 19 14:34 man
-rw-r--r--. 1 1001 1001 49 4月 7 2015 README
drwxr-xr-x. 8 1001 1001 77 1月 19 14:34 src
部分文件和目錄介紹:
- src 目錄存放了 Nginx軟件的所有源代碼最铁。
- man 目錄中存放了Nginx 軟件的幫助文檔,Nginx 安裝完成后垮兑,使用 man 命令可以查看冷尉。
- html 目錄中存放了l 兩個后綴名為.html的靜態(tài)網(wǎng)頁文件。這兩個文件與 Nginx服務(wù)器的運(yùn)行相關(guān)系枪。
- conf 目錄存放的是Nginx 服務(wù)器的配置文件雀哨,包含 Nginx服務(wù)器的基本配置文件和對部分特性的配置文件。
- auto 目錄中存放了大量腳本文件私爷,和configure腳本程序有關(guān)雾棺。
-
configure文件是 Nginx軟件的自動腳本程序。運(yùn)行 configure自動腳本一般會完成兩項(xiàng)工作:一是檢查環(huán)境衬浑,根據(jù)環(huán)境檢查結(jié)果生成 C 代碼捌浩;二是生成編譯代碼需要的Makefile 文件。
將當(dāng)前工作路徑定位到/app/nginx/nginx-1.6.3-compile/nginx-1.6.3工秩,使用以下命令配置并生成Makefile 文件:
[root@localhost nginx-1.6.3]# ./configure --prefix=/app/nginx/nginx-1.6.3
--prefix 指定了Nginx軟件的安裝路徑尸饺。
生成的 Nginx 軟件的Makefile文件就保存在當(dāng)前的工作目錄进统。
2.3 Linux 版本的編譯和安裝:Nginx 源代碼的編譯和安裝
得到了 Nginx 的 Makefile 文件后,在/app/nginx/nginx-1.6.3-compile/nginx-1.6.3目錄下使用 make 文件進(jìn)行編譯:
[root@localhost nginx-1.6.3]# make
編譯完成后侵佃,使用 make 的 install命令安裝 nginx軟件:
[root@localhost nginx-1.6.3]# make install
命令運(yùn)行完成后麻昼,將當(dāng)前目錄定位到/nginx下,可以對 Nginx服務(wù)器安裝后的全部資源進(jìn)行查看:
[root@localhost nginx-1.6.3]# cd /app/nginx/nginx-1.6.3
[root@localhost nginx-1.6.3]# ls -l
總用量 4
drwxr-xr-x. 2 root root 4096 1月 20 03:21 conf
drwxr-xr-x. 2 root root 40 1月 20 03:21 html
drwxr-xr-x. 2 root root 6 1月 20 03:21 logs
drwxr-xr-x. 2 root root 19 1月 20 03:21 sbin
- conf 目錄存放了所有配置文件馋辈。其中抚芦,nginx.conf文件是 Nginx服務(wù)器的主配置文件,其它配置文件是用來配置Nginx 的相關(guān)功能的迈螟。在此目錄下叉抡,所有的配置文件都提供了以.default結(jié)尾的默認(rèn)配置文件,方便我們將配置過的.conf文件恢復(fù)到初始狀態(tài)答毫。
- html 目錄存放了Nginx服務(wù)器在運(yùn)行過程中調(diào)用的一些 html 文件褥民。
- logs 目錄用來存放Nginx服務(wù)器日志的。
- sbin 目錄洗搂,目前只有nginx一個文件消返,這就是Nginx服務(wù)器的主程序了。
三耘拇、Nginx 服務(wù)的啟動暫湍旒眨控制
3.1 Nginx 服務(wù)的啟動
在 Linux 平臺下,啟動 Nginx 服務(wù)器直接運(yùn)行安裝目錄下 sbin目錄中的二進(jìn)制文件即可惫叛。二進(jìn)制文件 nginx 的相關(guān)用法:
[root@localhost nginx-1.6.3]# ./sbin/nginx -h
nginx version: nginx/1.6.3
Usage: nginx [-?hvVtq] [-s signal] [-c filename] [-p prefix] [-g directives]
Options:
-?,-h : this help 顯示幫助信息
-v : show version and exit 打印版本號并退出
-V : show version and configure options then exit 打印版本號和配置打印并退出
-t : test configuration and exit 測試配置正確性并退出
-q : suppress non-error messages during configuration testing 測試配置時只顯示錯誤
-s signal : send signal to a master process: stop, quit, reopen, reload 向主進(jìn)程發(fā)送信號
-p prefix : set prefix path (default: /app/nginx/nginx-1.6.3/) 指定 Nginx 服務(wù)器路徑前綴
-c filename : set configuration file (default: conf/nginx.conf) 指定 Nginx 配置文件路徑
-g directives : set global directives out of configuration file 指定 Nginx附加配置文件路徑
Nginx 服務(wù)啟動命令:
[root@localhost nginx-1.6.3]# ./sbin/nginx
[root@localhost nginx-1.6.3]# ps aux|grep nginx
root 8993 0.0 0.0 24812 760 ? Ss 03:50 0:00 nginx: master process ./sbin/nginx
nobody 8994 0.0 0.1 25236 1212 ? S 03:50 0:00 nginx: worker process
root 8996 0.0 0.0 112680 976 pts/0 R+ 03:50 0:00 grep --color=auto nginx
3.2 Nginx 服務(wù)的停止
停止 Nginx 有兩種方法:一種是快速停止倡勇;一種是平緩?fù)V埂嘉涌?焖偻V故侵噶⒓赐V巩?dāng)前Nginx 服務(wù)正在處理的所有網(wǎng)絡(luò)請求妻熊,馬上丟棄連接,停止工作仑最;平緩?fù)V故侵冈试S Nginx服務(wù)將當(dāng)前正在處理的網(wǎng)絡(luò)請求處理完成扔役,但不再接受新的請求,之后關(guān)閉連接词身,停止工作厅目。
停止Nginx 服務(wù)的操作比較多》ㄑ希可以發(fā)送信號:
[root@localhost nginx-1.6.3]# ./sbin/nginx
[root@localhost nginx-1.6.3]# ps aux|grep nginx
root 9630 0.0 0.0 24812 760 ? Ss 16:14 0:00 nginx: master process ./sbin/nginx
nobody 9631 0.0 0.1 25236 1212 ? S 16:14 0:00 nginx: worker process
root 9633 0.0 0.0 112680 976 pts/0 R+ 16:15 0:00 grep --color=auto nginx
[root@localhost nginx-1.6.3]# kill -INT 9630
[root@localhost nginx-1.6.3]# ps aux|grep nginx
root 9637 0.0 0.0 112680 972 pts/0 R+ 16:15 0:00 grep --color=auto nginx
或者
[root@localhost nginx-1.6.3]# ./sbin/nginx
[root@localhost nginx-1.6.3]# ps aux|grep nginx
root 9639 0.0 0.0 24812 760 ? Ss 16:16 0:00 nginx: master process ./sbin/nginx
nobody 9640 0.0 0.1 25236 1212 ? S 16:16 0:00 nginx: worker process
root 9642 0.0 0.0 112680 976 pts/0 R+ 16:16 0:00 grep --color=auto nginx
[root@localhost nginx-1.6.3]# kill -TERM 9639
[root@localhost nginx-1.6.3]# ps aux|grep nginx
root 9644 0.0 0.0 112680 972 pts/0 R+ 16:17 0:00 grep --color=auto nginx
或者
[root@localhost nginx-1.6.3]# ./sbin/nginx
[root@localhost nginx-1.6.3]# ps aux|grep nginx
root 9646 0.0 0.0 24812 756 ? Ss 16:17 0:00 nginx: master process ./sbin/nginx
nobody 9647 0.0 0.1 25236 1212 ? S 16:17 0:00 nginx: worker process
root 9649 0.0 0.0 112680 976 pts/0 R+ 16:17 0:00 grep --color=auto nginx
[root@localhost nginx-1.6.3]# kill -QUIT 9646
[root@localhost nginx-1.6.3]# ps aux|grep nginx
root 9651 0.0 0.0 112680 976 pts/0 R+ 16:18 0:00 grep --color=auto nginx
其中损敷,TERM 和 INT 信號用于快速停止,QUIT 用于平緩?fù)V埂?br> 當(dāng)然也可以使用 kill 命令發(fā)送-9深啤,但不建議使用:
[root@localhost nginx-1.6.3]# ./sbin/nginx
[root@localhost nginx-1.6.3]# ps aux|grep nginx
root 9654 0.0 0.0 24812 764 ? Ss 16:20 0:00 nginx: master process ./sbin/nginx
nobody 9655 0.0 0.1 25236 1216 ? S 16:20 0:00 nginx: worker process
root 9657 0.0 0.0 112680 972 pts/0 R+ 16:20 0:00 grep --color=auto nginx
[root@localhost nginx-1.6.3]# kill -9 9654
[root@localhost nginx-1.6.3]# ps aux|grep nginx
nobody 9655 0.0 0.1 25236 1472 ? S 16:20 0:00 nginx: worker process
root 9659 0.0 0.0 112680 972 pts/0 R+ 16:20 0:00 grep --color=auto nginx
3.3 Nginx 服務(wù)的重啟
平滑重啟是這樣一個過程拗馒,Nginx服務(wù)進(jìn)程接受到信號后,首先讀取新的Nginx 配置文件溯街,如果配置語法正確诱桂,則啟動新的 Nginx 服務(wù)洋丐,然后平滑關(guān)閉舊的服務(wù)進(jìn)程;如果新的 Nginx 配置有問題挥等,將顯示錯誤友绝,仍然使用舊的Nginx進(jìn)程提供服務(wù)。
使用以下命令實(shí)現(xiàn)Nginx服務(wù)的平滑重啟:
# ./sbin/nginx -g HUP [-c newConfFile]
HUP 信號用于發(fā)送平滑重啟信號肝劲。
newConfFile迁客,可選項(xiàng),用于指定新配置文件的路徑辞槐。
或者掷漱,使用新的配置文件代替了舊的配置文件后,使用
# kill HUP `/Nginx/logs/nginx.pid`
也可以實(shí)現(xiàn)平滑重啟榄檬。
3.4 Nginx 服務(wù)器的升級
平滑升級的過程是這樣的卜范,Nginx 服務(wù)接受到USR2信號后,首先將舊的nginx.pid文件(如果在配置文件中更改過這個文件的名字鹿榜,也是相同的過程)添加后綴.oldbin海雪,變?yōu)閚ginx.pid.oldbin文件;然后執(zhí)行新版本Nginx 服務(wù)器的二進(jìn)制文件啟動服務(wù)舱殿。如果新的服務(wù)啟動成功喳魏,系統(tǒng)中將有新舊兩個 Nginx 服務(wù)共同提供 web 服務(wù)。之后怀薛,需要向舊的Nginx 服務(wù)進(jìn)程發(fā)送WINCH 信號,使舊的Nginx 服務(wù)平滑停止迷郑,并刪除nginx.pid.oldbin文件枝恋。在發(fā)送WINCH信號之前,可以隨時停止新的 Nginx 服務(wù)嗡害。
注意:為了實(shí)現(xiàn)Nginx服務(wù)器的平滑升級焚碌,新的服務(wù)器安裝路徑應(yīng)該和舊的保持一致。因此建議用戶在安裝新服務(wù)器之前先備份舊服務(wù)器霸妹。
做好準(zhǔn)備工作以后十电,使用以下命令實(shí)現(xiàn)Nginx服務(wù)的平滑升級:
./sbin/Nginx -g USR2
其中,USR2信號用于發(fā)送平滑升級信號叹螟【槁睿或者,使用:
kill USR2 `/Nginx/logs/nginx.pid`
通過ps ef|grep nginx查看新的Nginx服務(wù)啟動正常罢绽,再使用:
./sbin/Nginx -g WINCH
其中畏线,WINCH 信號用于發(fā)送平滑停止舊服務(wù)信號×技郏或者寝殴,使用:
kill WINCH `/Nginx/logs/nginx.pid`
這樣就在不停止提供Web 服務(wù)的前提下完成了 Nginx服務(wù)器的平滑升級蒿叠。
四、nginx.conf的內(nèi)容和基本配置方法
默認(rèn)的nginx.conf文件中的完整內(nèi)容如下蚣常,注釋標(biāo)識為“#”市咽。
#user nobody;
worker_processes 1; #全局生效
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024; #在 events部分中生效
}
http {
include mime.types; #以下指令在 http部分中生效
default_type application/octet-stream;
#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;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server { #以下指令在http 的server部分中生效
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / { #以下指令在http/server的location中生效
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
4.1 nginx.conf文件的結(jié)構(gòu)
nginx.conf 文件的基本結(jié)構(gòu)為:(在同一配置塊中嵌套的配置塊,各個之間不存在次序關(guān)系抵蚊。)
... #全局塊
events{ #events 塊
...
}
http{ #http 塊
... #http 全局塊
server{ #server 塊
... #server 全局塊
location [PATTERN]{ #location 塊
...
}
location [PATTERN]{ #location 塊
...
}
}
server{ #server 塊
...
}
... #http 全局塊
}
配置文件支持大量可配置的指令施绎,絕大多數(shù)指令不是特定屬于某一個塊的。同一個指令放在不同層級的塊中泌射,其作用域也不同粘姜,一般情況下,高一級塊的指令可以作用于自身所在的塊和此塊包含的所有低層級塊熔酷。如果某個指令在兩個不同層級的塊中同時出現(xiàn)孤紧,則采用“就近原則”,即以較低層級的塊中的配置為準(zhǔn)拒秘。比如号显,某指令同時出現(xiàn)在http全局塊中和 server 塊中,并且配置不同躺酒,則應(yīng)該以 server 塊中的配置為準(zhǔn)押蚤。
各個塊的作用如下:
1.全局塊
全局塊是默認(rèn)配置文件從開始到events塊之間的一部分內(nèi)容,主要設(shè)置一些影響Nginx服務(wù)器整體運(yùn)行的配置指令羹应,因此揽碘,這些指令的作用域是Nginx服務(wù)器全局。
通常包括配置運(yùn)行Nginx 服務(wù)器的用戶(組)园匹、允許生成的worker process數(shù)雳刺、Nginx 進(jìn)程 PID存放路徑、日志的存放路徑和類型以及配置文件引入等裸违。
2.events 塊
events 塊涉及的指令主要影響Nginx 服務(wù)器與用戶的網(wǎng)絡(luò)連接掖桦。常用到的設(shè)置包括是否開啟對多worker process下的網(wǎng)絡(luò)連接進(jìn)行序列化,是否允許同時接收多個網(wǎng)絡(luò)連接供汛,選取哪種事件驅(qū)動模型處理連接請求枪汪,每個 worker process可以同時支持的最大連接數(shù)等。
這一部分指令對 Nginx服務(wù)器的性能影響較大怔昨,在實(shí)際配置中應(yīng)該根據(jù)實(shí)際情況靈活調(diào)整雀久。
3.http 塊
http塊是Nginx 服務(wù)器配置中的重要部分,代理朱监、緩存和日志定義等絕大多數(shù)的功能和第三方模塊的配置都可以放在這個模塊岸啡。可以在 http全局塊中配置的指令包括文件引入赫编、MIME-Type定義巡蘸、日志自定義奋隶、是否使用sendfile傳輸文件、連接超時時間悦荒、單連接q 請求數(shù)上限等唯欣。
4.server 塊
server 塊和“虛擬主機(jī)”的概念有密切聯(lián)系。在 server 全局塊中搬味,最常見的兩個配置項(xiàng)是本虛擬主機(jī)的監(jiān)聽配置和本虛擬主機(jī)的名稱或 IP 配置境氢。
5.location 塊
location 塊的主要作用是,基于Nginx服務(wù)器接受到的q 請求字符串碰纬,對除虛擬主機(jī)名稱之外的字符串j 進(jìn)行匹配萍聊,對特定的請求進(jìn)行處理。地址定向悦析、數(shù)據(jù)緩存和應(yīng)答控制等功能都是在這部分實(shí)現(xiàn)寿桨。許多第三方模塊的配置也是在location塊中提供功能。
4.2 配置運(yùn)行Nginx服務(wù)器用戶(組)
用于配置運(yùn)行Nginx 服務(wù)器用戶(組)的指令是user强戴,其語法格式為:
user user [group];
user亭螟,指定可以運(yùn)行Nginx服務(wù)器的用戶。
group骑歹,可選項(xiàng)预烙,指定可以運(yùn)行Nginx 服務(wù)器的用戶組。
只有被設(shè)置的用戶或用戶組成員才有權(quán)限啟動Nginx 進(jìn)程道媚。
如果希望所有用戶都可以啟動Nginx 進(jìn)程扁掸,有兩種辦法:一是將此指令行注釋掉:
#user [user] [group];
或者將用戶(和用戶組)設(shè)置為nobody:
user nobody nobody;
這也是 user指令的默認(rèn)配置。user 指令只能在全局塊中配置最域。
注意:在 Nginx 配置文件中也糊,每一條指令都必須以分號結(jié)束,請不要忘記羡宙。
4.3 配置允許生成的worker process數(shù)
worker process是 Nginx服務(wù)器實(shí)現(xiàn)并發(fā)處理服務(wù)的關(guān)鍵所在。從理論上來說掐隐,worker process的值越大狗热,可以支持的并發(fā)處理量也越多,但實(shí)際上它還要受到來自軟件本身虑省、操作系統(tǒng)本身資源和能力匿刮、硬件設(shè)備等的制約。
配置允許生成的worker process數(shù)的指令是worker_processes探颈,其語法格式為:
worker_processes number | auto;
number熟丸,指定 Nginxj 進(jìn)程最多可以產(chǎn)生的worker process數(shù)。
auto伪节,設(shè)置此值光羞,Nginx進(jìn)程將自動檢測绩鸣。
在默認(rèn)的配置文件中,number=1纱兑。啟動Nginx服務(wù)器以后呀闻,使用以下命令可以看到Nginx服務(wù)器除了主進(jìn)程master process ../sbin/nginx 之外,還生成了一個worker process:
[root@k-master sbin]# ps aux|grep nginx
root 5875 0.0 0.0 24812 760 ? Ss 09:54 0:00 nginx: master process ./nginx
nobody 5876 0.0 0.1 25236 1212 ? S 09:54 0:00 nginx: worker process
root 5878 0.0 0.0 112680 972 pts/1 R+ 09:54 0:00 grep --color=auto nginx
如果將 number 改為3潜慎,重新運(yùn)行Nginx 進(jìn)程捡多,再次使用以上命令,則可以看到此時的Nginx 服務(wù)器除了主進(jìn)程之外铐炫,已經(jīng)生成了3個worker process垒手。此指令只能在全局塊中設(shè)置。
4.4 配置Nginx進(jìn)程PID存放路徑
Nginx進(jìn)程作為系統(tǒng)的守護(hù)進(jìn)程倒信,我們需要在某文件中保存當(dāng)前運(yùn)行程序的主進(jìn)程號科贬。Nginx 支持對它的存放路徑進(jìn)行自定義配置,指令是 pid堤结,其語法格式為:
pid file;
其中唆迁,file 指定存放路徑和文件名稱。
配置文件默認(rèn)將此文件存放在Nginx 安裝目錄 logs下竞穷,名字為nginx.pid描孟。path 可以是絕對路徑也可以是以 Nginx安裝目錄為根目錄的相對路徑。比如要把 Nginx.pid放置到Nginx 安裝目錄sbin 下蜀变,文件名為web_nginx驻售,則可以使用以下配置:
pid sbin/web_nginx
此指令只能在全局塊中進(jìn)行配置。
4.5 配置錯誤日志的存放路徑
在全局塊看政、http 塊和 Server 塊都可以對Nginx服務(wù)器的日志進(jìn)行相關(guān)配置朴恳。使用的指令是error_log,其語法結(jié)構(gòu)是:
error_log file | stderr [debug | info | notice | warn | error | crit | alert | emerg];
Nginx服務(wù)器的日志支持輸出到某一固定的文件file 或者輸出到標(biāo)準(zhǔn)錯誤輸出stderr允蚣。
Nginx默認(rèn)的日志存放和級別設(shè)置:
error_log logs/error.log error;
4.6 配置文件的引入
Nginx 提供了include指令來完成配置文件的引入于颖,其語法結(jié)構(gòu)為:
include file;
其中,file是要引入的配置文件嚷兔,它支持相對路徑森渐。
此指令可以放在配置文件的任意地方。
4.7 設(shè)置網(wǎng)絡(luò)連接的序列化
Nginx配置中包含了這樣一條指令 accept_mutex冒晰,當(dāng)其設(shè)置為開啟的時候同衣,將會對多個Nginx進(jìn)程接收連接進(jìn)行序列化,防止多個進(jìn)程對連接的爭搶壶运。其語法結(jié)構(gòu)為:
accept_mutex on | off;
此指令默認(rèn)為開啟(on)狀態(tài)耐齐,其只能在events塊中進(jìn)行配置。
4.8 設(shè)置是否允許同時接收多個網(wǎng)絡(luò)連接
每個 Nginx 服務(wù)器的worker process 都有能力同時接收多個新到達(dá)的網(wǎng)絡(luò)連接,但是這需要在配置文件中進(jìn)行設(shè)置埠况,其指令為 multi_accept耸携,語法結(jié)構(gòu)為:
multi_accept on | off
此指令默認(rèn)為關(guān)閉(off)狀態(tài),即每個 worker process一次只能接收一個新到達(dá)的網(wǎng)絡(luò)連接询枚。此指令只能在events塊中進(jìn)行配置违帆。
4.9 事件驅(qū)動模型的選擇
Nginx服務(wù)器提供了多種事件驅(qū)動模型來處理網(wǎng)絡(luò)消息。指令為 use金蜀,語法結(jié)構(gòu)為:
use method;
其中刷后,method可選擇的內(nèi)容有:select、poll渊抄、kqueue、epoll护桦、rtsig二庵、/dev/poll以及eventport贪染。
此指令只能在events塊中進(jìn)行配置催享。
4.10 配置最大連接數(shù)
指令worker_connections主要用來設(shè)置允許每一個worker process同時開啟的最大連接數(shù)。其語法結(jié)構(gòu)為:
worker_connections number;
此指令的默認(rèn)設(shè)置為512因妙。
注意:這里的 Number不僅僅包括和前端用戶建立的連接數(shù)痰憎,而是包括所有可能的連接數(shù)攀涵。另外以故,number 值不能大于操作系統(tǒng)支持打開的最大文件句柄數(shù)量怒详。
此指令只能在events塊中進(jìn)行配置。
4.11 定義MIME-Type
在默認(rèn)的Nginx 配置文件中,我們看到在http全局塊中有以下兩行配置:
include mime.types; #以下指令在 http部分中生效
default_type application/octet-stream;
第一行從外部引用了mime_types文件善玫,我們來看一下它的內(nèi)容片段:
types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/javascript js;
application/atom+xml atom;
application/rss+xml rss;
text/mathml mml;
text/plain txt;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/x-component htc;
image/png png;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/x-icon ico;
image/x-jng jng;
image/x-ms-bmp bmp;
image/svg+xml svg svgz;
image/webp webp;
application/font-woff woff;
application/java-archive jar war ear;
application/json json;
application/mac-binhex40 hqx;
application/msword doc;
application/pdf pdf;
application/postscript ps eps ai;
application/rtf rtf;
application/vnd.apple.mpegurl m3u8;
application/vnd.ms-excel xls;
application/vnd.ms-fontobject eot;
application/vnd.ms-powerpoint ppt;
application/vnd.wap.wmlc wmlc;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/x-7z-compressed 7z;
application/x-cocoa cco;
application/x-java-archive-diff jardiff;
application/x-java-jnlp-file jnlp;
application/x-makeself run;
application/x-perl pl pm;
application/x-pilot prc pdb;
application/x-rar-compressed rar;
application/x-redhat-package-manager rpm;
application/x-sea sea;
application/x-shockwave-flash swf;
application/x-stuffit sit;
application/x-tcl tcl tk;
application/x-x509-ca-cert der pem crt;
application/x-xpinstall xpi;
application/xhtml+xml xhtml;
application/xspf+xml xspf;
application/zip zip;
application/octet-stream bin exe dll;
application/octet-stream deb;
application/octet-stream dmg;
application/octet-stream iso img;
application/octet-stream msi msp msm;
application/vnd.openxmlformats-officedocument.wordprocessingml.document docx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet xlsx;
application/vnd.openxmlformats-officedocument.presentationml.presentation pptx;
audio/midi mid midi kar;
audio/mpeg mp3;
audio/ogg ogg;
audio/x-m4a m4a;
audio/x-realaudio ra;
video/3gpp 3gpp 3gp;
video/mp2t ts;
video/mp4 mp4;
video/mpeg mpeg mpg;
video/quicktime mov;
video/webm webm;
video/x-flv flv;
video/x-m4v m4v;
video/x-mng mng;
video/x-ms-asf asx asf;
video/x-ms-wmv wmv;
video/x-msvideo avi;
}
第二行中使用指令default_type配置了用于處理前端請求的 MIME類型,其語法結(jié)構(gòu)為:
default_type mime-type;
其中奕扣,mime-type為 types 塊中定義的MIME-type惯豆,如果不加此指令楷兽,默認(rèn)值為text/plain芯杀。此指令還可以在 http 塊雅潭、server 塊或者location塊中進(jìn)行配置扶供。
4.12 自定義服務(wù)日志
errer_log指令用于配置Nginx 進(jìn)程運(yùn)行時的日志存放和級別诚欠,此處所指的日志是指記錄Nginx服務(wù)器提供服務(wù)過程應(yīng)答前端要求的日志轰绵,我們將其稱為服務(wù)日志左腔。
Nginx 服務(wù)器支持對服務(wù)日志的格式液样、大小、輸出等進(jìn)行配置坊秸,需要使用兩個指令褒搔,分別是access_log和 log_format 指令星瘾。
access_log指令的語法結(jié)構(gòu)為:
access_log path [format [buffer=size]];
path:配置服務(wù)日志的文件存放路徑和名稱琳状。
format:可選項(xiàng)念逞,自定義服務(wù)日志的格式字符串肮柜,也可以通過“格式串的名稱”使用log_format指令定義好的格式审洞。“格式串的名稱”在log_format指令中定義仰剿。
size:配置臨時存放日志的內(nèi)存緩存區(qū)大小南吮。
此指令可以在http部凑、Server塊或者 location 塊中進(jìn)行設(shè)置涂邀。默認(rèn)的配置為:
access_log logs/access.log combined;
其中比勉,combined為log_format指令默認(rèn)定義的日志格式字符串的名稱浩聋。
如果要取消記錄服務(wù)日志的功能衣洁,則使用:
access_log off;
和 access_log聯(lián)合使用的另一個指令是log_format坊夫,它專門用于定義服務(wù)日志的格式践樱,并且可以為格式字符串定義一個名字拷邢,以便access_log指令可以直接調(diào)用屎慢。其語法格式為:
log_format name string ...;
name:格式字符串的名字腻惠,默認(rèn)的名字為combined集灌。
string:服務(wù)日志的格式字符串欣喧∷舭ⅲ可以使用 Nginx配置項(xiàng)預(yù)設(shè)的一些變量獲取相關(guān)內(nèi)容驯鳖,變量的名稱使用雙引號括起來浅辙,string 整體使用單引號括起來摔握。
示例:
log_format exampleLog '$remote_addr - [$time_local] $request ' '$status $body_bytes_sent $http_referer ' '$http_user_agent';
此指令只能在 http 塊中進(jìn)行配置氨淌。
4.13 配置允許sendfile 方式傳輸文件
用于開啟或關(guān)閉使用sendfile傳輸文件指令:
sendfile on | off;
默認(rèn)值為 off盛正,可以在 http 塊豪筝、server 塊或者location塊中進(jìn)行配置。
sendfile_max_chunk size;
其中团搞,size 值如果大于0逻恐,Nginx進(jìn)程的每個worker process每次調(diào)用sendfile傳輸?shù)臄?shù)據(jù)量最大不能超過這個值复隆;如果設(shè)置為0挽拂,則無限制亏栈。默認(rèn)值為0.此指令可以在http塊仑扑、server塊或 location塊中配置镇饮。
sendfile_max_chunk 128k;
4.14 配置連接超時時間
與用戶建立會話連接后储藐,Nginx 服務(wù)器可以保持這些連接打開一段時間钙勃,指令keeplive_timeout就是用來設(shè)置此時間的辖源,其語法結(jié)構(gòu)為:
keepalive_timeout timeout [header_timeout];
timeout:服務(wù)端對連接的保持時間克饶。默認(rèn)值為75s矾湃。
header_timeout:可選項(xiàng)邀跃,在應(yīng)答報文頭部的 Keep-Alive域設(shè)置超時時間:“Keep-Alive:timeout=header_timeout”拍屑。報文中的這個指令可以被Mozilla或者Konqueror識別僵驰。
此指令還可以出現(xiàn)在server 塊和 location 塊中矢渊。
keepalive_timeout 120s 100s;
其含義是矮男,在服務(wù)端保持連接的時間設(shè)置為120s毡鉴,發(fā)給用戶端的應(yīng)答報文頭部中Keep-Alive域的超時時間設(shè)置為100s猪瞬。
此指令可以在http 塊陈瘦、server 塊或location塊中配置痊项。
4.15 單連接請求數(shù)上限
Nginx 服務(wù)器端和用戶端建立會話連接后,用戶端通過此連接發(fā)送請求咖驮。指令keepalive_requests用于限制用戶通過某一連接向 Nginx服務(wù)器發(fā)送請求的次數(shù)托修。其語法結(jié)構(gòu)為:
keepalive_requests number;
此指令還可以出現(xiàn)在Server 塊和 location 塊中诀黍,默認(rèn)設(shè)置為100眯勾。
4.16 配置網(wǎng)絡(luò)監(jiān)聽
配置監(jiān)聽使用指令listen吃环。其配置方法主要有三種:
- 第一種配置監(jiān)聽的IP 地址郁轻,語法結(jié)構(gòu)為:
listen address[:port] [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [deferred] [accept_filter=filter] [bind] [ssl];
- 第二種配置監(jiān)聽端口好唯,其語法結(jié)構(gòu)為:
listen port [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ipv6only=on|off] [ssl];
- 第三種配置UNIX Domain Socket蜕提,其語法結(jié)構(gòu)為:
listen unix:path [default_server] [backlog=number] [rcvbuf=size] [sndbuf=size] [accept_filter=filter] [deferred] [bind] [ssl];
address:IP 地址谎势,如果是IPv6地址脏榆,需要使用中括號“[]”括起來须喂,比如[fe80::1]等镊折。
port:端口號恨胚,如果只定義了IP 地址沒有定義端口號,就使用80端口升熊。
path:socket文件路徑级野,如/var/run/nginx.sock 等蓖柔。
default_server:標(biāo)識符况鸣,將此虛擬主機(jī)設(shè)置為address:port 的默認(rèn)主機(jī)镐捧。注意:在 Nginx-0.8.21之前的版本懂酱,使用的是default由驹。
setfib=number:Nginx-0.8.44中使用這個變量為監(jiān)聽socket關(guān)聯(lián)路由表,目前只對FreeBSD 起作用默刚,不常用荤西。
backlog=number:設(shè)置監(jiān)聽函數(shù)listen()最多允許多少網(wǎng)絡(luò)連接同時處于掛起狀態(tài)邪锌,在FreeBSD中默認(rèn)為-1,其它平臺默認(rèn)為511妇萄。
rcvbuf=size冠句,設(shè)置監(jiān)聽socket接受緩存區(qū)大小懦底。
sndbuf=size丐重,設(shè)置監(jiān)聽socket發(fā)送緩存區(qū)大小弥臼。
deferred:標(biāo)識符径缅,將 accept()設(shè)置為Deferred 模式纳猪。
accept_filter=filter,設(shè)置監(jiān)聽端口對請求的過濾鼠锈,被過濾的內(nèi)容不能被接收和處理购笆。本指令只在FreeBSD和NetBSD 5.0+平臺下有效同欠。filter可以設(shè)置為dataready或httpready。
bind:標(biāo)識符襟锐,使用獨(dú)立的bind()處理此address:port捌斧;一般情況下捞蚂,對應(yīng)端口相同而 IP地址不同的多個連接,Nginx 服務(wù)器將只使用一個監(jiān)聽命令丁存,并使用bind()處理端口相同的所有連接解寝。
ssl:標(biāo)識符夫偶,設(shè)置會話連接使用 SSL模式進(jìn)行兵拢,此標(biāo)識符和Nginx服務(wù)器提供的HTTPS服務(wù)有關(guān)。
listen 指令的使用看起來比較復(fù)雜腻扇,但其實(shí)在一般的使用過程中幼苛,相對來說比較簡單,默認(rèn)的設(shè)置為:
listen *:80 | *:8000
即監(jiān)聽所有80端口和8000端口。下面給出一些示例來說明listen 的用法:
listen 192.168.1.10:8000; #監(jiān)聽具體的 IP和具體的端口上的連接
listen 192.168.1.10; #監(jiān)聽具體IP 的所有端口上的連接
listen 8000; #監(jiān)聽具體端口上的所有 IP 連接荐绝,等同于listene *:8000;
listen 192.168.1.10 default_server backlog=1024; #設(shè)置192.168.1.10的連接請求默認(rèn)由此虛擬主機(jī)處理,并且允許最多1024網(wǎng)絡(luò)連接同時處于掛起狀態(tài)恕沫。
4.17 基于名稱的虛擬主機(jī)配置
這里的“主機(jī)”婶溯,j 就是指此server 塊對外提供的虛擬主機(jī)迄委。設(shè)置了主機(jī)的名稱并配置好 DNS褐筛,用戶就可以使用這個名稱向此虛擬主機(jī)發(fā)送請求了。配置主機(jī)名稱的指令為server_name叙身,其語法結(jié)構(gòu)為:
server_name name ...;
對于 name 來說渔扎,可以只有一個名稱,也可以由多個名稱并列信轿,之間用空格隔開晃痴。每個名字就是一個域名虏两,由兩段或三段組成愧旦,之間由點(diǎn)號“.”隔開。下面是一個簡單的示例:
server_name myserver.com www.myserver.com;
在該例中定罢,此虛擬主機(jī)的名稱設(shè)置為myserver.com或www.myserver.com笤虫。Nginx服務(wù)器規(guī)定,第一個名稱作為此虛擬主機(jī)的主要名稱祖凫。
在 name 中可以使用通配符“*”和正則表達(dá)式琼蚯。
4.18 基于 IP 的虛擬主機(jī)配置
配置基于 IP 的虛擬主機(jī),即為 Nginx 服務(wù)器提供的每臺虛擬主機(jī)配置一個不同的 IP惠况,因此需要將網(wǎng)卡設(shè)置為同時能夠監(jiān)聽多個 IP 地址遭庶。
...
http
{
...
server
{
listen: 80;
server_name: 192.168.1.31;
...
}
server
{
listen: 80;
server_name: 192.168.1.32;
...
}
...
}
4.19 配置 location 塊
在Nginx的官方文檔中定義的location的語法結(jié)構(gòu)為:
location [ = | ~ | ~* | ^~ ] uri {...}
其中,uri 變量是待匹配的請求字符串稠屠,可以是不含正則表達(dá)式的字符串峦睡;也可以是包含有正則表達(dá)式的字符串。
4.20 配置請求的根目錄
Web 服務(wù)器接受到網(wǎng)絡(luò)請求后权埠,首先要在服務(wù)器端指定目錄中尋找請求資源榨了。在 Nginx 服務(wù)器中,指令 root就是用來配置這個根目錄的攘蔽,其語法結(jié)構(gòu)為:
root path;
其中龙屉,path 為Nginx 服務(wù)器接受到請求以后查找資源的根目錄路徑。
此指令可以在http 塊满俗、server 塊或者 location 塊中配置转捕。由于使用 Nginx服務(wù)器多數(shù)情況下要配置多個location 塊對不同的請求分別做出處理,因此該指令通常在location塊中進(jìn)行設(shè)置唆垃。這個指令的一個示例為:
location /data/
{
root /locationtest1;
}
當(dāng)location 塊接收到“/data/index.htm”的請求時五芝,將在/locationtest1/data/目錄下找到index.htm響應(yīng)請求。
4.21 更改location的 URI
在location 塊中辕万,除了使用root 指令指明請求處理根目錄与柑,還可以使用alias指令改變location接收到的URI的請求路徑谤辜,其語法結(jié)構(gòu)為:
alias path;
其中,path即為修改后的根路徑价捧。
location ~ ^/data/(.+\.(htm|htm))$
{
alias /locationtest1/other/$1;
}
當(dāng)此location塊接收到“/data/index.htm”的請求時丑念,匹配成功,之后根據(jù)alias指令的配置结蟋,Nginx 服務(wù)器將到/locationtest1/other目錄下找到index.htm并響應(yīng)請求脯倚。可以看到嵌屎,通過alias指令的配置推正,根路徑已經(jīng)從/data更改為/locationtest1/other了。
4.22 設(shè)置網(wǎng)站的默認(rèn)首頁
指令 index 用于設(shè)置網(wǎng)站的默認(rèn)首頁宝惰,它一般可以有兩個作用:一是植榕,用戶在發(fā)出請求訪問網(wǎng)站時,請求地址可以不寫首頁名稱尼夺;二是尊残,可以對一個請求,根據(jù)其請求內(nèi)容而設(shè)置不同的首頁淤堵。該指令的語法結(jié)構(gòu)為:
index file ...;
其中寝衫,file 變量可以包括多個文件名,其間使用空格分隔拐邪,也可以包含其它變量慰毅。此變量默認(rèn)為“index.html”。
看一個示例:
location ~ ^/data/(.+)/web/ $
{
index index.$1.html index.my1.html index.html;
}
當(dāng) location 塊接受到“/data/locationtest/web/”時扎阶,匹配成功汹胃,它首先將欲置變量$1置為“l(fā)ocationtest”,然后在/data/locationtest/web/路徑下按照index 的配置次序依次尋找index.locationtest.html頁东臀、index.my1.html頁和index.html頁着饥,首先找到哪個頁面,就使用哪個頁面響應(yīng)請求啡邑。
4.23 設(shè)置網(wǎng)站的錯誤頁面
Nginx 服務(wù)器設(shè)置網(wǎng)站錯誤頁面的指令為error_page贱勃,語法結(jié)構(gòu)為:
error_page code ... [=[response]] uri
code井赌,要處理的HTTP 錯誤代碼谤逼。
response,可選項(xiàng)仇穗,將 code 指定的錯誤代碼轉(zhuǎn)化為新的錯誤代碼response流部。
uri,錯誤頁面的路徑或者網(wǎng)站地址纹坐。如果設(shè)置為路徑枝冀,則是以Nginx服務(wù)器安裝路徑下的html目錄為根路徑的相對路徑;如果設(shè)置為網(wǎng)址,則 Nginx 服務(wù)器會直接訪問該網(wǎng)址獲取錯誤頁面果漾,并返回給用戶端球切。
看幾個error_page指令的示例:
error_page 404 /404.html;
設(shè)置 Nginx服務(wù)器使用“Nginx安裝路徑/html/404.html”頁面響應(yīng)404錯誤。再如:
error_page 403 http://somewebsite.com/forbidden.html;
設(shè)置Nginx 服務(wù)器使用http://somewebsite.com/forbidden.html頁面響應(yīng)403錯誤绒障。再如:
error_page 410 = 301 /empth.gif
設(shè)置Nginx 服務(wù)器產(chǎn)生410的 HTTP消息時吨凑,使用“Nginx 安裝路徑/html/empty.gif”返回給用戶端301消息。
將錯誤頁面放到自定義路勁下户辱,比如鸵钝,我們希望Nginx 服務(wù)器使用“/myserver/errorpage/404.html”頁面響應(yīng)404錯誤,那么在設(shè)置完:
error_page 404 /404.html
之后庐镐,我們再添加這樣一個 location 塊:
location /404.html
{
root /myserver/errorpages/
}
首先捕獲“/404.html”請求恩商,然后將請求定向到新的路徑下面即可。
error_page 指令可以在http 塊必逆、server 塊和 location 塊中配置怠堪。
4.24 基于 IP 配置 Nginx 的訪問權(quán)限
allow 指令,用于設(shè)置允許Nginx的客戶端 IP末患,語法結(jié)構(gòu)為:
allow address | CIDR | all;
address研叫,允許訪問的客戶端的 IP,不支持同時設(shè)置多個璧针。如果有多個 IP需要設(shè)置嚷炉,需要重復(fù)使用allow 指令。
CIDR探橱,允許訪問的客戶端的 CIDR 地址申屹,例如202.80.18.23/25,前面是32位IP 地址隧膏,后面“/25”代表該 IP地址前25位是網(wǎng)絡(luò)部分哗讥,其余位代表主機(jī)部分。
all胞枕,代表允許所有客戶端訪問杆煞。
另一個指令是deny,作業(yè)剛好和 allow指令相反腐泻。示例:
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
deny all;
}
如果遇到匹配的配置時决乎,則停止繼續(xù)向下搜索相關(guān)配置。因此派桩,當(dāng)192.168.1.0/24客戶端訪問時构诚,Nginx 在第三行解析配置發(fā)現(xiàn)允許客戶端訪問,就不會向下解析第4行了铆惑。
4.25 基于密碼配置Nginx 的訪問權(quán)限
auth_basic 指令范嘱,用于開啟或者關(guān)閉該認(rèn)證功能送膳,語法結(jié)構(gòu)為:
auth_basic string | off;
string,開啟該認(rèn)證功能丑蛤,并配置認(rèn)證時的指示信息叠聋。
off,關(guān)閉該認(rèn)證功能受裹。
auth_basic_file 指令晒奕,用于設(shè)置包含用戶名和密碼信息的文件路徑,語法結(jié)構(gòu)為:
auth_basic_user_file file;
其中名斟,file 為密碼文件的絕對路徑脑慧。
五、Nginx 服務(wù)器基礎(chǔ)配置實(shí)例
nginx.conf文件示例的完整內(nèi)容:
#### 全局塊 開始 ####
# 配置允許運(yùn)行Nginx服務(wù)器的用戶和用戶組
user nobody nobody;
# 配置允許 Nginx 進(jìn)程生成的 worker process 數(shù)
worker_processes 3;
# 配置Nginx服務(wù)器運(yùn)行的錯誤日志存放路徑
error_log logs/error.log;
# 配置 Nginx 服務(wù)器運(yùn)行時的 pid文件存放路徑和名稱
pid logs/nginx.pid;
#### 全局塊 結(jié)束 ####
#### events 塊 開始 ####
events {
# 配置事件驅(qū)動模型
use epoll;
# 配置最大連接數(shù)
worker_connections 1024;
}
#### events 塊 結(jié)束 ####
#### http 塊 開始 ####
http {
# 定義 MIME-Type
include mime.types;
default_type application/octet-stream;
# 配置允許使用sendfile方式傳輸
sendfile on;
# 配置連接超時時間
keepalive_timeout 65;
# 配置請求處理日志的格式
log_format access.log '$remote_addr-[$time_local]-"$request"-"$http_user_agent"';
#### sever 塊 開始 ####
# 配置虛擬主機(jī) myServer1
server {
# 配置監(jiān)聽端口和主機(jī)名稱(基于名稱)
listen 8081;
server_name myServer1;
# 配置請求處理日志存放路徑
access_log /myweb/server1/log/access.log;
# 配置錯誤頁面
error_page 404 /404.html;
# 配置處理/server1/location1請求的 location
location /server1/location1 {
root /myweb;
index index.svr1-loc1.htm;
}
# 配置處理/server1/location2請求的 location
location /server1/location2 {
root /myweb;
index index.svr1-loc2.htm;
}
}
# 配置虛擬主機(jī) myServer2
server {
# 配置監(jiān)聽端口和主機(jī)名稱(基于名稱)
listen 8082;
server_name 192.168.1.3;
# 配置請求處理日志存放路徑
access_log /myweb/server2/log/access.log;
# 配置錯誤頁面砰盐,對錯誤頁面 404.html做了定向配置
error_page 404 /404.html;
# 配置處理/server2/location1請求的 location
location /server2/location1 {
root /myweb;
index index.svr2-loc1.htm;
}
# 配置處理/svr2/loc2請求的 location
location /svr2/loc2 {
# 對 location的 URI進(jìn)行更改
alias /myweb/server2/location2;
index index.svr2-loc2.htm;
}
# 配置錯誤頁面轉(zhuǎn)向
location = /404.html {
root /myweb/;
index 404.html;
}
}
#### sever 塊 結(jié)束 ####
}
#### http 塊 結(jié)束 ####
在該示例中闷袒,我們配置了兩個虛擬主機(jī)myServer1和myServer2,前者是基于名稱的岩梳,后者是基于 IP 的囊骤。