root和alias屬於nginx的核心模組ngx_http_core_module的兩個指令。從官網的如下鏈結看到root和alias
的基本語法
root指令語法
語 法: root path;
預設值: root html;
配置段: http, server, location, if in location
alias指令語法
語 法: alias path;
預設值: —
配置段: location
root配置如下
location /blog/
請求 這個位址時,那麼在伺服器裡面對應的真正的資源是 /usr/local/nginx/html/blog/root.html檔案。可以發現真實的路徑是root指定的值加上location指定的值。
alias配置如下
location /blog/
同樣請求時,在伺服器查詢的資源路徑是:/usr/local/nginx/html/alias.html。正如其名,alias指定的路徑是location的別名,不管location的值怎麼寫,資源的真實路徑都是alias指定的路徑.。
注:可以把/usr/local/nginx/html/alias.html目錄下的alias.html移到/usr/local/nginx/html/blog/alias.html目錄下,在訪問,直接返回404.html
location和root組合相當於在root指定目錄下進行location匹配,location所匹配內容必須保證在root指定目錄的子目錄,否則配置無效,而且location只能向下匹配,不能匹配location指定目錄上一級目錄中的內容。
location與alias組合,需要保證location匹配目錄與alias指定目錄級別相同,否則配置無效;與location和root組合相同的是,location所匹配內容也只能向下匹配。
root與alias主要區別是如何解釋location後面的uri
root的處理結果:root路徑+location路徑
alias的處理結果:使用alias路徑替換location路徑
alias是乙個目錄別名的定義,root則是最上層目錄的定義。
alias只能作用在location中,而root可以存在server、http和location中;
alias後面必須要用 「/」 結束,不然會被認為是個檔案,而找不到對應的目錄;而root則對 「/」 可有可無
alias在使用正則匹配時,必須捕捉要匹配的內容並在指定的內容處使用
這條可以參考官網如下章節:
alias在使用正則匹配時,必須捕捉要匹配的內容並在指定的內容處使用,按照個人意思的理解就是正規表示式一定要匹配到內容,然後再alias中引用,不知道是否理解有誤不??
然後官網給出了一種推薦使用的方案,如下圖的情況使用root代替alias。
演示:在nginx的配置檔案nginx.conf
location ~ ^/users/(.+\.(?:gif|jpe?g|png))$
location ~ ^/users/(.+.(?:gif|jpe?g|png))$:這條正規表示式的意思是以/users/開頭,區分大小寫匹配gif、jpeg、jpg、png這四種檔案
訪問如下資源路徑
Nginx配置靜態資源的root和alias配置
在配置nginx靜態資源的時候可以通過root和alias兩種方式處理 預設主機為192.168.1.1 埠為80下 location test 這裡使用root配置 如果訪問 192.168.1.1 test a.html 則對應的路徑為 usr local test a.html通過root配置...
Nginx中alias與root的區別
以前只知道nginx的location塊中的root用法,用起來總是感覺滿足不了自己的一些想法。然後終於發現了alias這個東西。1 root的用法 location request path image 這樣配置的結果就是當客戶端請求 request path image cat.png 的時候,...
nginx系列 八 nginx失效轉移與超時處理
處理辦法 反向 將apache更換成nginx,推送伺服器只有乙個唯讀json介面,切換後除錯方便,出錯概率極低。失效策略 伺服器500錯誤的參考文章 如果後端tomcat伺服器處理超時,則nginx不請求下乙個tomcat節點,而是直接返回。nginx預設,會重複嘗試所有的節點以後,才會返回給瀏覽...