NGINX $is_args $args 不适用于多个位置

NGINX $is_args $args not working with multiple locations

我正在尝试使用 nginx 托管两个 React 应用程序,一切正常,需要查询参数 ?test=1

    location / {
            alias /root/phone_build/;
            index index.html;
            try_files $uri /index.html$is_args$args =404;
    }
    location /web_build {
            alias /root/web_build/;
            index index.html;
            try_files $uri /index.html$is_args$args =404;
    }

    #location / {
    location /api {
            proxy_pass http://localhost:3000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_read_timeout 300s;
            proxy_send_timeout 300s;
            proxy_connect_timeout 300s;
            proxy_cache_bypass $http_upgrade;
    }

我试过 ?$query_string 但还是不行。有什么建议吗?谢谢你

您使用的 try_files 不正确。 file 项匹配文件名,不需要 $is_args$args,否则,当您向请求添加查询字符串时,您将简单地强制执行 404 响应。

此外,使用 root 而不是 aliasalias directive 仅在特殊情况下才需要。

尝试:

index index.html;

location / {
        root /root/phone_build;
        try_files $uri /index.html =404;
}
location /web_build {
        root /root;
        try_files $uri /web_build/index.html =404;
}
location /api {
    ...
}