我要进行的设置如下:我希望 nginx 在 /test 子目录中查找文件,如果不存在,则从其正常 uri 提供该文件。我认为使用 try_files 会相当简单。以下是我想出的设置:
server {
listen 80;
server_name test-server;
location / {
root /opt/www;
index index.php;
try_files /test$uri $uri;
}
}
这只起到了一半的作用。如果我去http://测试服务器/某物,并且有一个 /test/something 文件,它将提供 /test/something 文件。但是,如果没有 /test/something 文件,但有一个 /something 文件,它将返回 500 内部服务器错误。我最好的猜测是存在某种递归循环,但我不知道替代方案是什么。
答案1
try_files 的最后一个参数必须是保证文件。$uri 不适用于此。而是使用try_files /test$uri $uri =404;