2016-07-07 12 views
1

uwsgi_passのnginx try_filesディレクティブを使用しようとしていますが、難しさがあります。try_filesをuwsgiで使用する

基本的には、希望URIが有効であればtry_filesはuWSGIコンテナに質問し、そうでない場合は代わりに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; 
    } 
} 

をしかし、これは行うことは要求ごとにドキュメントルートを確認しており、そのないがあれば、それは単にベイルとindex.htmlファイルを返します。

私が代わりにしたいことは以下の通りです:

  1. リクエストがwww.myapp.com
  2. nginxの前方用でuWSGIコンテナ
  3. の上に、この要求が来ることが無効である場合は、インデックスを返します.html

uWSGIにファイルを試してみる方法はありますか?

私が最終的にここで達成しようとしているのは、リアクタを搭載したHTML5 Pushstateです。私はReactフロントエンドを持つFlaskアプリを実行しています。ユーザーがwww.myapp.com/preferences/useri dでブラウザをリフレッシュする場合、nginxはその値をコンテナに転送し、無効な場合はインデックスを返します。

+0

ます(/ APIは常にuwsgiに通過常にインデックスHTMLを返す/使用2箇所)uwsgiによって処理要求のための別の経路を使用するカント – Chamindu

+0

@davidism iは 'try_files'行を削除した場合、その後のすべての要求でありますuwsgiに転送され、有効なパスではないものは私のページに404を表示するだけです。その場合、index.htmlファイルを返すことにします。 – sma

+0

@Chamindu私はすでにそれを試みましたが、問題は私のindex.htmlファイルもuWSGIによって提供されていることです。しかし、おそらくこれは私の問題の原因です... – sma

答えて

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; 
    } 
}