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

我正在开发一个JavaScript web应用程序,它将驻留在目录“js”中。 它将被连接成一个文件,并被放置在“静态”文件夹中进行分发,但在我开发时,我希望目录“/ js”指向不在“静态”文件夹中的JavaScript源文件。

这是我的configuration文件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. 根据Nginx的陷阱页面 ,使用内部位置块的根本可能工作,但可能会有意想不到的副作用。 他们推荐使用“别名”。
  2. 相同的页面也build议不要在位置内使用索引块 – 而是一次使用索引块,它将被inheritance到下面的块。

我会根据您的示例更改您的文件,如下所示:

 server { listen 1337; charset UTF-8; root /home/tomas/projects/streamcore/static; index index.html; location /js { alias /home/tomas/projects/streamcore/js; } }