Nginx配置靜態代理/靜態資源對映時root與alias的區別,帶字首對映用alias

霸道流氓發表於2024-03-27

場景

Nginx搭建靜態資源對映實現遠端訪問伺服器上的圖片資源:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/117283572

以上在配置靜態資源對映時使用的如下配置

location / {
root D:/pic_old/;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}

如果想實現在對映後的路徑新增字首,比如

location /report/ {
root D:/pic_old/;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}

原本想實現在訪問

http://127.0.0.1:250/report/mark.jpg

時找到D:/pic_old/下的mark.jpg檔案,發現卻實現不了。

透過檢視日誌發現,注意這裡配置的是test,不是pic_old

使用root,則Nginx 會將請求的 URL 路徑與指定的根目錄路徑進行拼接。這意味著 URL 中的路徑會對映到檔案系統中的對應位置。

注:

部落格:
https://blog.csdn.net/badao_liumang_qizhi

實現

root配置

使用 root 指令時,Nginx 會將請求的 URL 路徑與指定的根目錄路徑進行拼接。

這意味著 URL 中的路徑會對映到檔案系統中的對應位置。

假設我們有以下配置

location /report/ {
root D:/test/;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}

當收到的請求是

http://127.0.0.1:250/report/mark.jpg

Nginx會查詢檔案系統中的D:/test/report/mark.jpg並返回該檔案。

alias配置

與 root 不同,alias 指令允許我們在返回檔案時,重寫 URL 路徑的部分或全部。

這對於需要在返回檔案時修改 URL 路徑的情況非常有用。

假設有如下配置

location /report/ {
alias D:/test/;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}

當收到的請求是

http://127.0.0.1:250/report/mark.jpg

Nginx會查詢檔案系統中的D:/test/mark.jpg並返回該檔案。

相關文章