1、前言
在使用Nginx搭建網站時,我們經常會碰見訪問網站文件路徑404 Not Found的情況。有些時候是因為,文件真的不存在,但有些時候卻是因為Nginx的配置文件導致的。為了減少類似的情況,加深對Nginx文件路徑的處理認識,特寫此文記錄相關指令的應用。
2、root與alias的語法
從官網的文件的中,指令root與alias都屬於ngx_http_core_module模塊,是Nginx的核心功能指令。
其對應的語法分別為:
從上述語法中,可以看出,root指令可用在http、server、location等配置塊中,而alias僅可以用在location配置塊中。
而root指令大多時候是用來設置文件路徑的根目錄,而alias則是用來設置文件路徑的虛擬目錄。其中的區別在於,二者如何處理location
的URI。
3、root與alias的使用
location /i/ {
root /data/w3;
}
上面是一個root指令的簡單配置,當用戶訪問https://xxx.test.com/i/123.jpg時,Nginx會從設置的根目錄/data/w3/中查到是否存在/i/123.jpg這樣的文件路徑。
如有,則返回圖片;無,則返回404 Not Found。
這種也是我們實際應用中比較常見的場景,即root指令會把Location的URI拼接至root指定的文件目錄之后。
location /i/ {
alias /data/w3/images/;
}
而alias指令則有別於root指令,alias會把location后面配置的URI路徑丟棄掉,把當前匹配到的目錄指向到指定的目錄。
如用戶訪問https://xxx.test.com/i/,Nginx就會嘗試匹配訪問/data/w3/images/目錄下的index.html;
如用戶訪問https://xxx.test.com/i/123.jpg,Nginx就會嘗試匹配訪問/data/w3/images/目錄下的123.jpg。
Alias在使用時,還需要注意以下幾點:
- 使用alias時,目錄名后面一定要加"/"。
- alias可以指定任何名稱。
- alias在使用正則匹配時,必須捕捉要匹配的內容並在指定的內容處使用。
