它可以在你的病情被应用于一个很常见的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 –