将try_files与uwsgi一起使用

时间:2016-07-07 16:07:47

标签: nginx flask react-router uwsgi

我正在尝试将{nginx try_files指令与uwsgi_pass一起使用,并且遇到了很多困难。

基本上我想要的是try_files询问uWSGI容器,如果请求URI有效,如果没有,则提供index.html文件。我的nginx配置如下:

server {
   listen 80;
   access_log /tmp/nginx.log;

   location / {
       try_files $uri $uri/ /index.html;
       include uwsgi_params;
       uwsgi_pass 127.0.0.1:5001;
   }
}

但是这样做是检查每个请求的docroot,如果它不存在,它只是保释并返回index.html文件。

我想要的是以下内容:

  1. 请求来自www.myapp.com
  2. nginx将此请求转发到uWSGI容器
  3. 如果无效,则返回index.html
  4. 有没有办法'询问'uWSGI来尝试这些文件?

    我最终要在这里完成的是使用React Router的HTML5 Pushstate。我正在运行带有React前端的Flask应用程序。如果用户在www.myapp.com/preferences/useri d刷新浏览器,那么我希望nginx将其转发给容器,如果无效,则返回索引。

1 个答案:

答案 0 :(得分:1)

所以,在与@Chamindu交谈之后,我意识到我可能会以错误的方式解决这个问题。我阻止了uWSGI为我的index.html提供服务(尽管可能),而是依靠nginx来代替它。

server {
   listen 80;
   access_log /tmp/nginx.log;

   location / {
       root /var/www/myapplication/;
       try_files $uri $uri/ /index.html;
   }

   location /api {
       include uwsgi_params;
       uwsgi_pass 127.0.0.1:5001;
   }
}