如何让一台服务器上的多个位置指令在 nginx 中工作?

如何让一台服务器上的多个位置指令在 nginx 中工作?

我正在制作一个 JavaScript Web 应用程序,在开发过程中,它将驻留在目录“js”中。它将被连接到一个文件中,并放在“static”文件夹中以供分发,但在开发过程中,我希望目录“/js”指向不在“static”文件夹中的 JavaScript 源。

这是我的 nginx 配置文件,据我了解,它应该可以工作:

# Dev server.
server {
    listen 1337;
    charset UTF-8;

    location /js {
        root /home/tomas/projects/streamcore/js;
    }

    location / {
        root /home/tomas/projects/streamcore/static;
        index index.html;
    }
}

我可以访问“index.html”,但对“/js”下文件的任何请求都会导致 404 NOT FOUND。根据文档,请求应该与具有最具体模式的位置块匹配,在本例中为“/js”,所以我不明白为什么这不起作用。

如果需要,请索取更多信息。感谢您的帮助。

答案1

有几件事!

  1. 根据Nginx 缺陷页面,在位置块内使用 root 可能会有效,但可能会产生意想不到的副作用。他们建议改用“别名”。
  2. 同一页面还建议不要在位置内使用索引块 - 相反,只需使用一次它就会被继承到下面的块。

我会根据您的示例将您的文件更改为如下内容:

server {
    listen 1337;
    charset UTF-8;

    root /home/tomas/projects/streamcore/static;
    index index.html;

    location /js {
        alias /home/tomas/projects/streamcore/js;
    }
}

相关内容