它可以在你的病情被應用於一個很常見的try_files線
location/{
try_files $uri $uri/ /test/index.html;
}
你可能知道,第一部分,location /
比賽所有位置,除非它與更具體的位置相匹配,例如location /test
例如
第二部分( try_files
)意味着當您收到一個與此塊匹配的URI時,請首先嚐試$uri
,例如http://example.com/images/image.jpg
nginx將嘗試檢查/images
內部是否存在一個名爲image.jpg
的文件,如果發現它將首先投放它。
第二個條件是$uri/
如果沒有找到的第一個條件$uri
嘗試URI的目錄,例如http://example.com/images/
,ngixn首先會檢查一個名爲images
存在,那麼它不會找到它,這意味着,然後去第二次檢查$uri/
,看看是否有一個名爲images
的目錄存在,然後它會嘗試服務它。
旁註:如果你沒有autoindex on
你可能會得到一個403 Forbidden錯誤,因爲目錄列表默認情況下禁止。
編輯:我忘了提,如果你有index
定義,nginx的將嘗試檢查,如果該文件夾中存在的指數 之前嘗試目錄列表。
第三個條件/test/index.html
被認爲是一個回落的選項,(你需要使用至少2種選擇,一是和回退),你可以使用盡可能多的,你可以(從未讀過一收縮) ,nginx將在文件夾test
內查找文件index.html
,並在存在時提供該文件。
如果第三個條件也失敗,那麼nginx將提供404錯誤頁面。
也有一些所謂的命名位置,這樣
location @error {
}
你可以用try_files
這樣調用
try_files $uri $uri/ @error;
提示:如果你只有你想爲1分的條件,例如,在文件夾images
中,您只想提供圖片或轉至404錯誤,您可以寫出類似這樣的行
location /images {
try_files $uri =404;
}
這意味着無論是提供服務的文件或服務於一個404錯誤,你不僅可以通過$uri
它的自我而不=404
,因爲你需要有一個退而求其次的選擇使用。
您也可以選擇你想要的曾經的錯誤代碼,例如像:
location /images {
try_files $uri =403;
}
這將顯示一個禁止錯誤,如果不存在圖像,或者如果您使用500,它會顯示服務器錯誤等..
你是什麼意思在'try_files'行尾部的'/'? –
含義fallback選項是「/」。 「;」之前的字符在那一行。 – Jonah
它需要是一個文件,而不是一個URI,所以使用$ uri /或者使用/index.html –