Nginx 将try_文件与uwsgi一起使用

Nginx 将try_文件与uwsgi一起使用,nginx,flask,react-router,uwsgi,Nginx,Flask,React Router,Uwsgi,我正在尝试使用nginxtry\u files指令和uwsgi\u 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_

我正在尝试使用nginx
try\u files
指令和
uwsgi\u 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文件

我想要的是:

  • 请求进入www.myapp.com
  • nginx将此请求转发到uWSGI容器
  • 如果无效,则返回index.html
  • 有没有办法“要求”uWSGI试用这些文件


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

    因此,在与@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;
       }
    }
    

    你不能为uwsgi处理的请求使用单独的路径(使用2个位置/始终返回索引html./api始终传递到uwsgi)@Chamindu我已经尝试过了,但问题是我的index.html文件也由uwsgi提供服务。但也许这就是我问题的根源……我认为最好让nginx提供静态文件,让uwsgi担心动态内容。