可以根据您的情况应用的非常常见的 try_files 行是
location / {
try_files $uri $uri/ /test/index.html;
}
您可能了解第一部分,location /匹配所有位置,除非它与更具体的位置匹配,location /test例如
第二部分( the try_files)表示当您收到与此块匹配的 URI 时,$uri首先尝试,例如,http://example.com/images/image.jpgnginx 将尝试检查内部是否有一个文件/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,它将显示服务器错误等。