在Nginx配置中,root和alias指令都用于指定請求的資源路徑,但它們的行為有所不同:
root指令:
root指令用于設(shè)置基礎(chǔ)路徑,它將請求的URI與指定的基礎(chǔ)路徑結(jié)合,形成服務(wù)器上實(shí)際要查找的文件路徑。
當(dāng)一個(gè)請求到達(dá)時(shí),Nginx會將location匹配后的URI附加到root指令指定的路徑后,然后嘗試去尋找資源。
例如:
location /images/ {
root /var/www/html;
}
對于請求http://example.com/images/test.jpg,Nginx會在/var/www/html/images/test.jpg查找文件。
alias指令:
alias指令用于映射請求的URI到一個(gè)確切的文件系統(tǒng)路徑。
alias后面跟隨的路徑會被直接用于定位文件,而不與請求URI結(jié)合。
例如:
location /images/ {
alias /var/www/html/images/;
}
對于請求http://example.com/images/test.jpg,Nginx會在/var/www/html/images/test.jpg查找文件,注意這里的路徑末尾有一個(gè)斜線,這是必需的,因?yàn)樗嬖VNginx/images/是一個(gè)目錄,而不是文件。
總結(jié):
root適用于當(dāng)你希望URI的剩余部分與文件系統(tǒng)路徑直接組合的情況。
alias適用于需要將一個(gè)固定的URI映射到文件系統(tǒng)中的一個(gè)確切目錄時(shí),特別是當(dāng)URI和文件系統(tǒng)的目錄結(jié)構(gòu)不完全匹配時(shí)。
注意,alias通常比root復(fù)雜,因?yàn)閍lias會處理路徑結(jié)尾的斜線,以及在某些情況下,如URL重寫和內(nèi)部重定向時(shí),可能需要額外的處理。而root相對簡單,但靈活性較低。