Обслуживание статической домашней страницы с помощью nginx и остальных через uwsgi

У меня есть веб-сайт nginx + uwsgi (с использованием Flask для динамических страниц Python). Я хотел бы обслуживать домашнюю страницу, которая является статической, непосредственно через nginx и направлять все остальное на uwsgi.

Следующие директивы конфигурации nginx хорошо работают для обслуживания домашней страницы через nginx и перенаправления вызова с mysite.com/login на uwsgi:

location / {                                                                                                                                                                                                
    root  /var/www/mysite.com/static;                                                                                                                                                                
    index  index.html index.htm;                                                                                                                                                                            
}                                                                                                                                                                                                           

location /login {                                                                                                                                                                                           
    include uwsgi_params;                                                                                                                                                                                   
    uwsgi_pass 127.0.0.1:3031;                                                                                                                                                                              
} 

Но я не могу найти способ обобщить вторую директиву, чтобы перехватывать все вызовы mysite.com/something и направлять их на uwsgi.

Я попробовал следующее, что не сработало (получить 404 за все, кроме звонков на mysite.com):

location / {                                                                                                                                                                                                
    root  /var/www/mysite.com/static;                                                                                                                                                                
    index  index.html index.htm;                                                                                                                                                                            
}                                                                                                                                                                                                           

location /* {                                                                                                                                                                                           
    include uwsgi_params;                                                                                                                                                                                   
    uwsgi_pass 127.0.0.1:3031;                                                                                                                                                                              
}

Какие-либо предложения?


person gws    schedule 24.12.2011    source источник


Ответы (1)


Попробуйте что-нибудь вроде этого

server {
...
 root  /var/www/mysite.com/static;                                                                                                                                                                
 index  index.html index.htm;   
 try_files $uri @uwsgi; 
 location @uwsgi{
    include uwsgi_params;                                                                                                                                                                                   
    uwsgi_pass 127.0.0.1:3031; 
 }
...
}

http://wiki.nginx.org/HttpCoreModule#try_files

person Marcelo Bittencourt    schedule 24.12.2011
comment
Спасибо, после изменения директивы try_files на try_files $uri $uri/ @uwsgi; все заработало как часы. - person gws; 26.12.2011
comment
Черт! '$uri/' важен и устранил проблему и в моем случае (nginx 0.8.4 на Dreamhost VPS) - person velochy; 03.05.2014
comment
Можно ли использовать try_files только в определенном месте? Это может быть более эффективным - person 2080; 11.03.2020