可以根据您的情况应用的非常常见的 try_files 行是
location / {
try_files $uri $uri/ /test/index.html;
}
您可能了解第一部分,location /
匹配所有位置,除非它与更具体的位置匹配,location /test
例如
第二部分( the 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 禁止错误,因为默认情况下禁止列出目录。
编辑:我忘了提到,如果你已经index
定义了,nginx 会在尝试列出目录之前尝试检查该文件夹中是否存在索引。
第三个条件/test/index.html
被认为是一个后备选项,(你需要使用至少2个选项,一个和一个后备),你可以尽可能多地使用(以前从未读过收缩),nginx会在index.html
里面寻找文件文件夹test
并提供它(如果存在)。
如果第三个条件也失败,那么 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,它将显示服务器错误等。