Nginx筆記-指令root與alias


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在使用時,還需要注意以下幾點:

  1. 使用alias時,目錄名后面一定要加"/"。
  2. alias可以指定任何名稱。
  3. alias在使用正則匹配時,必須捕捉要匹配的內容並在指定的內容處使用。





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM