Nginx 配置文件仅适用于 ''/"

Nginx 配置文件仅适用于 ''/"

我正在将 nginx 设置为一种静态文件服务器。出于某种原因,它仅在我转到 123.123.123.123/ 或 123.123.123.123 时才工作。但是,当我转到 123.123.123.123/static/content/ 或 123.123.123.123/static/content/another.mp3 时,它返回 404 未找到。这是位于 并/etc/nginx/sites-available链接到 的配置文件/etc/nginx/sites-enabled。我真的很困惑为什么它不工作。

如能得到任何指点或建议我将非常感激。

服务器 {
    听 123.123.123.123:80;
    服务器名称 ””;

     地点 / {
         根/srv/主页;
         索引 索引.html;
     }

     位置/静态/内容/ {
         根/srv/静态/内容;
         索引歌曲.mp3;
     }

}

答案1

如果您查看错误日志,您将看到对 123.123.123.123/static/content/another.mp3 的请求,nginx 将查找 /srv/static/content/static/content/another.mp3。这是由于 nginx 中 root 指令的工作方式造成的。使用 root 时,nginx 会将请求 uri 路径附加到给定的根目录,因此您将从 root 指令获得一个 /static/content,并从请求中获得另一个。正确的方法是将根目录设置为 /srv:

location /static/content/ {
  root /srv;
  index song.mp3;
}

由于此位置处理的所有请求都以 /static/content 开头,因此它将仅提供 /srv/static/content 中的文件。

相关内容