我有一个嵌套的位置指令,我想/api
在/api/static/
为了提供静态文件,我try_files $uri /dev/null =404
在嵌套位置内使用。
location /api/ {
location /api/static/ {
try_files $uri /dev/null =404;
root /shared_volumes/staticfiles/;
}
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://app:8000/api/;
}
但这不起作用,http://app/api/static/afile.css
尽管文件存在,但 nginx 在访问时返回未找到/shared_volumes/static/afile.css
在 NGINX 文档中,$uri 是
请求中的当前 URI,已规范化 $uri 的值可能会在请求处理期间发生变化,例如执行内部重定向时或使用索引文件时。
nginx $uri 在嵌套位置中如何表现?nginx 是否api/static/afile.css
在/shared_volumes/staticfiles/
而不是中搜索文件afile.css
?
答案1
我/api/static/
按照上面评论中@Richard 和@Alexey 的建议更改了位置指令
location /api/static/ {
alias /shared_volumes/staticfiles/;
}
现在它可以工作了,谢谢!