使用nginx服务静态主页并通过uwsgi休息

gws*_*gws 9 nginx flask 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;                                                                                                                                                                              
} 
Run Code Online (Sandbox Code Playgroud)

但是我找不到一种方法来概括第二个指令来捕获对mysite.com/something的所有调用并将它们引导到uwsgi.

我尝试了以下哪些不起作用(除了调用mysite.com之外,获取404除外):

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

location /* {                                                                                                                                                                                           
    include uwsgi_params;                                                                                                                                                                                   
    uwsgi_pass 127.0.0.1:3031;                                                                                                                                                                              
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Mar*_*urt 10

尝试这样的事情

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; 
 }
...
}
Run Code Online (Sandbox Code Playgroud)

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

  • 谢谢,将**try_files**指令更改为`try_files $ uri $ uri/@uwsgi;`它就像一个魅力 (3认同)
  • NB!'$ uri /'很重要,并在我的情况下修复了问题(Dreamhost VPS上的nginx 0.8.4) (2认同)