nginx貌似沒有虛擬目錄的說法,由於它原本就是完徹底全根據目錄來設計並工做的。html
若是非要給nginx安上一個虛擬目錄的說法,那就只有alias標籤比較「像」,乾脆來講說alias標籤和root標籤的區別吧。前端
最基本的區別:alias指定的目錄是準確的,root是指定目錄的上級目錄,而且該上級目錄要含有location指定名稱的同名目錄。另外,根據前文所述,使用alias標籤的目錄塊中不能使用rewrite的break。nginx
因此使用nginx設置root時要注意一個問題,就是若是該root設置的前端目錄不是根目錄,那麼在寫root的絕對地址時,要把前端目錄的部分省略掉。 咱們用設置虛擬目錄指向的alias來和root比較一下就很是明顯了 alias設計
location /abc/ { alias /home/html/abc/; } 在這段配置下,http://test/abc/a.html就指定的是 /home/html/abc/a.html。這段配置亦可改爲
rootcode
location /abc/ { root /home/html/;} 能夠看到,使用root設置目錄的絕對路徑時,少了/abc,也就是說,使用root來設置前端非根目錄時,nginx會組合root和location的路徑。
另外,使用alias時目錄名後面必定要加「/」htm