我试图用后端(在这种情况下uwsgi为烧瓶)提供所有请求,如果后端没有这样的path,nginx应该返回404。
不知何故,我只能使用后端来接pipe
try_files $uri @uwsgi;
但这样,您可以访问根目录中的所有文件。 我不想在根目录中提供所有文件。
我也试过这个:
try_files @uwsgi =404;
但是,即使path在我的烧瓶应用程序中定义,我也会得到一个404。
更多的上下文: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; }
烧瓶的应用程序是这样的:
@app.route('/test') def hello_world(): return 'Hello World!'
所以当我访问example.com/test时,我想让烧瓶后端处理这个问题。 但我不希望nginx提供根目录中的所有文件。
为什么使用try_files如果你从来没有任何文件想要尝试,你总是想传递给你的WSGI处理程序? 你有没有尝试简单地使uwsgi_pass的根位置?
location / { include uwsgi_params; uwsgi_pass unix:$document_root/myapp.sock; }
您可以将其与静态位置/静态服务器名称结合使用,该文件服务于常规文件夹以外的文件,但仅用于该静态URL。