答案1
当未指定其他内容时,该index
指令具有隐含的默认值index.html
。它存在于您的文档根目录中。(请参阅下面我包含的详细说明默认值等的文档)
如果你想改变它作为其索引页,您需要定义一个新index
指令,以便将其添加到您的/
位置块,或者通过将其放在位置块之外但仍在服务器块内来全局应用它:
index nginx.html;
这告诉 nginx 去寻找不同的索引文件。
您看到的问题是由于/
位置块仅有的如果您指定了 /,并且由于您不允许autoindex
,并且因为/whatever
是您的 URI,并且它既不是文件也不是目录,因此它会返回到您的第三个选项,即文件nginx.html
。我知道这是违反直觉的,因为空 URI 或/
URI 通常意味着“按块处理它” location / { }
,但它在世界上更隐含的是这会将您带到给定网站的主页或索引页,这就是该index
指令存在的原因。
您需要告诉系统将哪些配置视为索引文件。您不能依赖独自在try_files
您的/
位置块中,您必须告诉它您的索引文件应该是什么。即使默认值对我来说很好,我也总是定义它。
请注意,如果您未定义 URI,try_files
则会回退到index
指令,因此对的请求http://foobarbaz.foo:8510
将到达在端口 8510 上侦听的 nginx 服务器块,以获取具有空 URI$HOST
的服务器名称/请求记录,并且从技术上讲,由于您的配置未为任何类型的请求指定不同的服务,foobarbaz.foo
因此 nginx 在内部将尝试提供默认索引页。index.html
index
句法:
index
file ...;
默认值:index index.html;
上下文:http, server, location
定义将用作索引的文件。文件名可以包含变量。按指定顺序检查文件。列表的最后一个元素可以是具有绝对路径的文件。示例:
index index.$geo.html index.0.html /index.html;
需要注意的是,使用索引文件会导致内部重定向,请求可以在不同的位置进行处理。例如,使用以下配置:
location = / { index index.html; } location / { ... }
...“/”请求实际上将在第二个位置被处理为“/index.html”。