如何将位置映射到 NGINX 中的路径

Mat*_*tia 4 nginx

我有一个 nginx 设置,需要将特定的 url 路径映射到服务器路径。例如,我需要example.test/myapp/转到服务器中的以下目录:/apps/myapp/web

我尝试添加以下位置块:

location /myapp/
{
    root /apps/myapp/web;
}
Run Code Online (Sandbox Code Playgroud)

但如果我去example.test/myapp/或者example.test/myapp我会得到404。

据我所知,根据文档,位置应该捕获以 开头的路径的任何内容,/myapp/并且它是服务器中唯一的位置块,因此不会发生冲突。另外,我尝试更改位置以指向根(即location /),并且它工作正常,因此这不是服务器路径错误或丢失文件的问题。我缺少什么?

Ter*_*nen 6

nginx 使用以下策略解析文件路径:

  1. 使用root指令中的路径
  2. 在指令后添加请求中的 URI。

现在,就你的情况而言:

  1. root/apps/myapp/web
  2. 来自 的 URIexample.test/myapp//myapp/.

因此,nginx 在目录中查找/apps/myapp/web/myapp/该请求的文件。

如果您希望/myapp/URI 从目录中获取文件/apps/myapp/web/,则需要使用以下alias指令:

location /myapp/ {
    alias /apps/myapp/web/;
}
Run Code Online (Sandbox Code Playgroud)