Nginx系列 root與alias指令用法的區別

2021-10-24 09:16:09 字數 2168 閱讀 7331

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預設,會重複嘗試所有的節點以後,才會返回給瀏覽...