try_files dentro do nginx se quebra a lógica

1

Eu quero fazer o nginx.conf que:  - em post proxy_pass em porta diferente  - em get retorna arquivos estáticos com index.html (serve SPA)

Como faço isso, atualmente tenho:

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] "try_files" directive is not allowed here in /etc/nginx/nginx.conf:41

    
por deathangel908 11.10.2018 / 12:55

1 resposta

1

Para citar servidor HTTP nginx , quarta edição (publicação Packt):

You might wonder: What are the advantages of using a location block over an if block? (...) [T]he main difference lies within the directives that can be employed within either block. Some can be inserted in an if block, and some can't; on the contrary, almost all directives are authorized within a location block.

Portanto, receio que try_files seja uma daquelas diretivas permitidas em um bloco location , mas não em um bloco if .

Quanto a como resolver esse problema e fazer o que você quer fazer, eu não (ainda) tenho uma resposta para isso.

    
por 11.10.2018 / 13:58

Tags