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

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

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

我尝试添加以下位置块:

location /myapp/
{
    root /apps/myapp/web;
}

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

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

答案1

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/;
}

相关内容