Nginx
nginx - 僅使用後端或 404 服務,根目錄中沒有靜態文件
我正在嘗試使用後端(在這種情況下為燒瓶的 uwsgi)提供所有請求,如果後端沒有這樣的路徑,nginx 應該返回 404。
不知何故,我只能在使用時讓後端接管
try_files $uri @uwsgi;
但是這樣,您可以訪問根目錄中的所有文件。我不想提供根目錄中的所有文件。
我也試過這個:
try_files @uwsgi =404;
但是即使在我的燒瓶應用程序中定義了路徑,我也會得到 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。