Nginx的 alias 與 root 的區別
nginx貌似沒有虛擬目錄的說法,由於它原本就是完徹底全根據目錄來設計並工做的。
若是非要給nginx安上一個虛擬目錄的說法,那就只有alias標籤比較「像」,乾脆來講說alias標籤和root標籤的區別吧。
最基本的區別:alias指定的目錄是準確的,root是指定目錄的上級目錄,而且該上級目錄要含有location指定名稱的同名目錄。另外,根據前文所述,使用alias標籤的目錄塊中不能使用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目錄了,獲得的結果是相同的。
可是,若是我把alias的配置改爲:
location /abc/ {
alias /home/html/def/;
}
那麼nginx將會從/home/html/def/取數據,這段配置還不能直接使用root配置,若是非要配置,只有在/home/html/下創建一個 def->abc的軟link(快捷方式)了。
通常狀況下,在location /中配置root,在location /other中配置alias是一個好習慣。
至於alias和root的區別,我估計尚未說徹底,若是在配置時發現奇異問題,不妨把這二者換換試試。
原文:http://www.sudone.com/nginx/nginx_alias.html 本身實踐總結: 一、使用alias時目錄名後面必定要加「/」 二、nginx、resin當虛擬目錄名與真實目錄同名時,虛擬目錄比真實目錄優先級要高。 三、前端nginx的虛擬目錄與後端resin真實目錄同名時,後端resin真實目錄優先級要高(即便resin也配製了同名的別名)。 四、nginx+resin/tomcat整合過程當中,發現Nginx的虛擬目錄不能正確解析jsp,待解決。
歡迎關注本站公眾號,獲取更多信息