nginx貌似沒有虛擬目錄的說法,因?yàn)樗緛砭褪峭晖耆鶕?jù)目錄來設(shè)計并工作的。
如果非要給nginx安上一個虛擬目錄的說法,那就只有alias標(biāo)簽比較“像”,干脆來說說alias標(biāo)簽和root標(biāo)簽的區(qū)別吧。
最基本的區(qū)別:alias指定的目錄是準(zhǔn)確的,root是指定目錄的上級目錄,并且該上級目錄要含有l(wèi)ocation指定名稱的同名目錄。另外,根據(jù)前文所述,使用alias標(biāo)簽的目錄塊中不能使用rewrite的break。
說不明白,看下配置:
location /abc/ {
alias /home/html/abc/;
}
在這段配置下,http://test/abc/a.html 就指定的是 /home/html/abc/a.html。這段配置亦可改成
location /abc/ {
root /home/html/;
}
這樣,nginx就會去找/home/html/目錄下的abc目錄了,得到的結(jié)果是相同的。
但是,如果我把a(bǔ)lias的配置改成:
location /abc/ {
alias /home/html/def/;
}
那么nginx將會從/home/html/def/取數(shù)據(jù),這段配置還不能直接使用root配置,如果非要配置,只有在/home/html/下建立一個 def->abc的軟link(快捷方式)了。
一般情況下,在location /中配置root,在location /other中配置alias是一個好習(xí)慣。
至于alias和root的區(qū)別,我估計還沒有說完全,如果在配置時發(fā)現(xiàn)奇異問題,不妨把這兩者換換試試。
原文:http://www.sudone.com/nginx/nginx_alias.html
自己實(shí)踐總結(jié):
1、使用alias時目錄名后面一定要加“/”
2、nginx、resin當(dāng)虛擬目錄名與真實(shí)目錄同名時,虛擬目錄比真實(shí)目錄優(yōu)先級要高。
3、前端nginx的虛擬目錄與后端resin真實(shí)目錄同名時,后端resin真實(shí)目錄優(yōu)先級要高(即使resin也配制了同名的別名)。
4、nginx+resin/tomcat整合過程中,發(fā)現(xiàn)Nginx的虛擬目錄不能正確解析jsp,待解決。
新聞熱點(diǎn)
疑難解答
圖片精選