Nginx裏的root/index/alias/proxy_pass的意思

1.【alias】html

別名配置,用於訪問文件系統,在匹配到location配置的URL路徑後,指向【alias】配置的路徑。如:nginx

location /test/ 
{ 
alias /home/sftp/img/; 
}

即:請求/test/1.jpg(省略了協議與域名),將會返回文件/home/sftp/img/1.jpg。後端

2.【root】服務器

根路徑配置,用於訪問文件系統,在匹配到location配置的URL路徑後,指向【root】配置的路徑,並把location配置路徑附加到其後。如:網絡

location /test/ 
{ 
root /home/sftp/img/;
}

即:請求/test/1.jpg(省略了協議與域名),將會返回文件/home/sftp/img/test/1.jpg,相較於alias,使用root會把/test/附加到根目錄以後。測試

3.【proxy_pass】.net

反向代理配置,用於代理請求,適用於先後端負載分離或多臺機器、服務器負載分離的場景,在匹配到location配置的URL路徑後,轉發請求到【proxy_pass】配置的URL,是否會附加location配置路徑與【proxy_pass】配置的路徑後是否有"/"有關,有"/"則不附加,如:代理

location /test/ 
{ 
proxy_pass http://127.0.0.1:8080/; 
}

即:請求/test/1.jpg(省略了協議與域名),將會被nginx轉發請求到http://127.0.0.1:8080/1.jpg(未附加/test/路徑)。code

location /test/ 
{ 
proxy_pass http://127.0.0.1:8080; 
}

即:請求/test/1.jpg(省略了協議與域名),將會被nginx轉發請求到http://127.0.0.1:8080/test/1.jpg(附加/test/路徑)。htm

location /test/ 
{ 
proxy_pass http://127.0.0.1:8080/img; 
}

即:請求/test/1.jpg(省略了協議與域名),將會被nginx轉發請求到http://127.0.0.1:8080/img1.jpg(未附加/test/路徑,但附加了/test/以後的路徑)。

 4.【index】,通常有這樣的配置:

location / {
  root html;
  index index.html index.htm;
}

注意,這裏的root後面沒有跟絕對路徑,即前面沒有/xxx這種寫法,因此它指的是nginx根目錄下的html;

即假設請求http://localhost/test/uu.html匹配的是這個規則,那麼nginx會從根據是root是得知是訪問文件系統(而非訪問其餘網絡,能夠理解爲此時的nginx是正向代理),而後判斷html前面沒有/或者是如C:這樣的用於描述絕對路徑的寫法,說明這個路徑是相對於nginx根目錄下的html目錄,因此最終是從html裏找test目錄下的uu.html文件返回;

這裏的index是當好比請求http://localhost時默認其實在nginx裏是http://localhost/index(可是若是客戶端這麼寫則nginx會認爲是找絕對文件index因此會提示找不到),因此這裏的index其實就是指示當是index時優先從niginx目錄下的html目錄裏找index.html返回,沒有才找index.htm返回;

不過要注意看nginx是否啓動了多個,本身以前測試的時候nginx啓動了多個致使reload的不是正在工做的,差點還覺得這個配置不是這樣的;

參考:https://blog.csdn.net/zhangliangzi/article/details/78257593

相關文章
相關標籤/搜索