Nginx的try_files參數保證能懂的講解

Nginx的配置語法靈活,可控制度非常高。在0.7以後的版本中加入了一個try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率。

 

 

try_files指令

語法:try_files file ... uri 或 try_files file ... = code
默認值:無
作用域:server location

 

如下例:

 wKioL1bzklvwQpMPAAA7YK25Urw107.png

當用戶在瀏覽器輸入blog.zsc.com或者blog.zsc.com/index.html或者blog.zsc.com/index.php時,根據try_files規則,可以找到該域名對應的web頁面;

當用戶在瀏覽器輸入blog.zsc.com/fjdklfjaldkfjlads/zjklfjdslfjds等不存在的域名時,根據try_files規則,“$uri”和“$uri”都不符合,所以nginx就自動把域名轉換爲blog.zsc.com/index.php,然後將blog.zsc.com/index.php頁面內容反饋給客戶端。

try_files作用是按順序檢查文件是否存在,返回第一個找到的文件或文件夾(結尾加斜線表示爲文件夾),如果所有的文件或文件夾都找不到,會進行一個內部重定向到最後一個參數。

需要注意的是,只有最後一個參數可以引起一個內部重定向,之前的參數只設置內部URI的指向(如下圖)。最後一個參數是回退URI且必須存在,否則會出現內部500錯誤。命名的location也可以使用在最後一個參數中。與rewrite指令不同,如果回退URI不是命名的location那麼$args不會自動保留,如果你想保留$args,則必須明確聲明。

wKioL1bzknfTiOtfAAB_s0JJ6R8078.png

try_files的最後一個參數設置爲@tornado@,內部重定向時會用到),當“$uri”找不到時,就做一個內部重定向,將請求拋給“location @tornado”。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章