我正在将 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 中的文件。