Nginx

nginx - 僅使用後端或 404 服務,根目錄中沒有靜態文件

  • August 5, 2015

我正在嘗試使用後端(在這種情況下為燒瓶的 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。

引用自:https://serverfault.com/questions/710854