我有一个非常简单的 nginx 设置,其中有两个位置块
server {
listen 80 default_server;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ =404;
}
location /more {
root /usr/share/nginx/more;
index index.html index.htm;
try_files $uri $uri/ =404;
}
}
它唯一应该做的事情是为第一个位置提供来自 /usr/share/nginx/html 的文件,为第二个位置提供来自 /usr/share/nginx/more 的文件。
第一个位置按预期工作,但第二个位置一直返回 404。
这个问题太简单了,文档或其他问题中都没有提到。我应该先检查什么?
记录显示:/usr/share/nginx/more 存在并且只包含一个文件,即 index.html
我发现 more 和 /usr/share/nginx 中的 html 文件夹之间的唯一“区别”是权限:
drwxr-xr-x 11 root root 4096 May 25 00:01 html
drwxr-xr-x 2 root root 4096 May 25 07:41 more
我知道我的设置重复了不必要的行,但我猜这不是现在的问题。
答案1
尝试一下,你会看到奇迹:)
location ~* ^/more/ {
root /usr/share/nginx/more;
index index.html index.htm;
try_files $uri $uri/ =404;
}