Linux
nginx 和 try_files 混淆
我對try_files在 nginx 上的工作方式感到困惑,這需要在實時生產伺服器上完成,因此在 100% 確定之前無法進行測試。我正在使用
header("X-Accel-Redirect: /out/" . $fname);
從 PHP 傳遞文件,這些文件由 nginx 配置中的以下內容處理:location /out { root /home; internal; }
現在我已經在我的伺服器上添加了一個額外的磁碟來儲存文件,我希望 nginx 首先
/home
在/home2
. 我應該如何實現這個設置,下面的程式碼是否有效並且應該完成我需要的:location /out { try_files /home /home2; internal; }
另外,使用 try_files 時我們是否需要 root 指令?
語法:try_files 文件 … uri
按順序檢查文件是否存在,並返回找到的第一個文件。尾部斜杠表示目錄 - $uri /。如果未找到文件,則會呼叫到最後一個參數的內部重定向。請注意,只有最後一個參數會導致內部重定向,前一個參數只是設置內部 URI 指針。最後一個參數是回退 URI,必須存在,否則會引發內部錯誤。可以使用命名位置。與重寫不同,如果回退不是命名位置,則不會自動保留 $args。如果您需要保留 args,則必須明確這樣做。
正如文件所指定的,您需要有一個必須存在的備份 URI。你可以在你的設置中嘗試這樣的事情:
location /out { try_files /home/ /home2/ /index.html; internal; }
如果您使用 指定了正確的路徑,則不需要
root
-block 中的-directive 。location``try_files