nginx - serve apenas com backend ou 404, sem arquivos estáticos na raiz

1

Estou tentando atender a todos os pedidos com o backend (uwsgi for flask neste caso) e se o backend não tiver esse caminho, o nginx deve retornar 404.

De alguma forma, só consigo fazer o backend assumir quando uso

try_files $uri @uwsgi;

Mas assim, você pode acessar todos os arquivos no diretório raiz. Eu não quero servir todos os arquivos no diretório raiz.

Eu também tentei isso:

try_files @uwsgi =404;

Mas então eu obtenho um 404 mesmo que o caminho esteja definido no meu aplicativo de balão.

Mais contexto: Ubuntu 14.04, nginx 1.4.6

    location @uwsgi {
            include uwsgi_params;
            uwsgi_pass unix:$document_root/myapp.sock;
    }

    location / {
            try_files $uri @uwsgi;
    }

    location /static/ {
            try_files $uri =404;
    }

O aplicativo do frasco é assim:

@app.route('/test')
def hello_world():
    return 'Hello World!'

Então, quando eu visitar example.com/test, quero que o backend flask lidará com isso. Mas eu não quero que o nginx sirva todos os arquivos no diretório raiz.

    
por Sebastian 04.08.2015 / 20:43

1 resposta

1

Por que usar try_files se você nunca tiver arquivos que queira tentar e sempre quiser passar para o manipulador WSGI? Você tentou simplesmente fazer o uwsgi_pass da raiz?

location / {
    include uwsgi_params;
    uwsgi_pass unix:$document_root/myapp.sock;
}

Você pode combiná-lo com um local estático / um nome de servidor estático que veicule arquivos de uma pasta normal, mas apenas para esse URL estático.

    
por 05.08.2015 / 00:15