nginx 中的 try_files if 破坏了逻辑

nginx 中的 try_files if 破坏了逻辑

我想使 nginx.conf : - 在不同的端口上发布 proxy_pass - 在 get 时返回带有 index.html 的静态文件(提供 SPA)

我该怎么做呢,目前我有:

nginx.conf

worker_processes 1;

events {

    worker_connections 1024;
}

http {

    include mime.types;
    error_log /var/log/nginx/error.log debug;
    default_type application/octet-stream;

    sendfile on;

    keepalive_timeout 65;

    upstream nodejs {

        server 127.0.0.1:3001;
    }


    server {

        listen 3000;

        charset utf-8;
        client_max_body_size 5M;

        location / {

            if ($request_method = POST ) {

                proxy_pass http://nodejs;
            }

            if ($request_method = GET ) {

                root /usr/src/app;
                try_files $uri /index.html;
            }
        }

    }

}

nginx:[emerg] /etc/nginx/nginx.conf:41 中不允许使用“try_files”指令

答案1

去引用nginx HTTP 服务器,第四版(Packt 出版):

你可能会想:location与块相比,使用块有哪些优势if(...) [主要区别在于可以在任一块内使用的指令。有些指令可以插入到块中if,有些则不能;相反,几乎所有指令都允许在块内使用location

因此,我担心这是那些在块中允许但不能在块中try_files的指令之一。locationif

至于如何解决这个问题并做你想做的事情,我(还)没有答案。

相关内容