0

フラスコアプリケーションを開発していますが、サーバーを構成しようとして4時間経っても、理解できません。

つまりね:

  • vmにはxx.xx.xx.xx:81からアクセスできます

  • このサーバーでは、私のアプリは/var/hg/repositories/data/test.pyにあります

xx.xx.xx.xx:81/wsからこのアプリケーションにアクセスしたい

これは私がnginxでしたことです:

 location = /var/hg/repositories/data { rewrite ^ /var/hg/repositories/data/; }
     location /ws { try_files $uri @ws; }
     location @ws {
        include uwsgi_params;
        uwsgi_param SCRIPT_NAME /var/hg/repositories/data;
        uwsgi_modifier1 30;
        uwsgi_pass unix:/tmp/uwsgi.sock;
     }

uwsgiをランチするためのyamlファイルがあります:

uwsgi:
  socket: 127.0.0.1:9090
  master: 1
  workers: 1
  chmod-socket: 666
  auto-procname: 1
  python-path: .
  pidfile: /tmp/uwsgi.pid
  daemonize: /var/log/uwsgi.log
  module: test:app

xx.xx.xx.xx:81に移動すると、従来のnginxウェルカムメッセージが表示されます。

xx.xx.xx.xx:81 / wsに移動すると、404が表示されます。

私は何が間違っているのですか?

confの更新後、私は

    location = /var/hg/repositories/data/
    location /var/hg/repositories/data/ { try_files $uri @web }
    location @ws {
             uwsgi_pass unix:/tmp/uwsgi.sock;
    }

私のuwsgiconf:

uwsgi:
  socket: unix:/tmp/uwsgi.lock
  master: 1
  workers: 1
  chmod-socket: 666
  auto-procname: 1
  pidfile: /tmp/uwsgi.pid
  deamonize: /var/log/uwsgi.log
  manage-script-name: true
  mount: /ws=/var/hg/repositories/data/test.py
  callable: app
4

1 に答える 1

2

uWSGI でアプリを「マウント」する必要があります。現在、空の SCRIPT_NAME として「マウント」しています。

マウント: /ws=test.py

呼び出し可能: アプリ

(「モジュール」ディレクティブを削除します) でうまくいきます。

nginx が SCRIPT_NAME を管理するのはあまり賢くなく、modifier1 30 を使用するのは本当に醜いハックであるため、避けることをお勧めします。

nginx から uwsgi_param と uwsgi_modifier1 の両方を削除し、uWSGI に manage-script-name: true を追加するだけです

于 2012-11-24T17:07:00.720 に答える