我有一个 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 使用以下策略解析文件路径:
- 使用来自
root
指令的路径 - 在指令后添加来自请求的 URI。
现在,就你的情况而言:
root
是/apps/myapp/web
。- URI
example.test/myapp/
来自/myapp/
。
因此 nginx 会在目录中查找/apps/myapp/web/myapp/
该请求的文件。
如果您希望/myapp/
URI 从目录中获取文件/apps/myapp/web/
,则需要使用以下alias
指令:
location /myapp/ {
alias /apps/myapp/web/;
}