我正在使用这样的try_files :
http {
服务器{
error_log / var / log / nginx debug;
听127.0.0.1:8080;
位置 / {
索引closures
default_type application / octet-stream;
try_files / files1 $ uri / files2 / $ uri / files3 $ uri;
}
}
}
在错误日志中,它显示了这一点:
* [错误] 15077#0: 45399在内部redirect到“/files1/files2/files3/path/to/my/image.png”,client:127.0.0.1,server:,request:“GET /path/to/my/image.png HTTP / 1.1“,主机:”mydomain.com“,引荐来源:” http://mydomain.com/folder “
谁能告诉我为什么/files1/files2/files3/path/to/my/image.png正在寻找/files1/files2/files3/path/to/my/image.png而不是/files1/path/to/my/image.png /files2/path/to/my/image.png和/files3/path/to/my/image.png ?
谢谢
syntax: try_files file ... uri; try_files file ... =code;
最后一个参数指定内部redirect的返回码或URI。 你的情况是/files3$uri 。
也许你真的想要这个: try_files /files1$uri /files2$uri /files3$uri =404;
我怀疑nginx本质上是recursion的,因为在try_files中指定的path是由location /块匹配的,它再次应用try_files指令。 尝试添加这些位置块来捕获正在search的path。
location /files1 {} location /files2 {} location /files3 {}
该问题已通过在位置块外添加root指令来解决:
http {
根 /;
位置 / {
try_files文件1 $ uri文件2 $ uri文件3 $ uri = 404;
}
}