NGINX 在嵌套位置内提供静态文件

NGINX 在嵌套位置内提供静态文件

我有一个嵌套的位置指令,我想/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/;
    }

现在它可以工作了,谢谢!

相关内容