Nginxconfiguration文件只适用于“/”

我将nginx设置为一种静态文件服务器。 出于某种原因,只有当我转到123.123.123.123 /或123.123.123.123时才有效。 但是,当我去123.123.123.123 /静态/内容/或123.123.123.123 /静态/内容/另一.mp3它返回404找不到。 这是位于/etc/nginx/sites-available并且链接到/etc/nginx/sites-enabled的configuration文件。 我真的很难为什么它不工作。

任何指针或提示将不胜感激。

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

     位置 / {
          root / srv / homepage;
          index index.html;
      }

     位置/静态/内容/ {
          root / srv / static / content;
          index song.mp3;
      }

 }

如果你查看你的错误日志,你会看到123.123.123.123/static/content/another.mp3的请求,nginx会查找/srv/static/content/static/content/another.mp3。 这是由于nginx中root指令的作用。 在使用root的时候,nginx会把请求的uripath追加到给定的根目录下,所以你会从根指令中得到一个/ static /内容,而从请求中得到另一个。 正确的方法是将您的根设置为/ srv:

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

由于这个位置处理的所有请求都以/ static / content开始,所以它只会将文件从/ srv / static / content中取出。