簡體   English   中英

在nginx + uwsgi下燒瓶

[英]flask under nginx + uwsgi

我們正在開發一個燒瓶應用程序但是在嘗試配置服務器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;
     }

我有一個yaml文件來午餐uwsgi:

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

我的uwsgi conf:

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

您必須在uWSGI中“安裝”該應用程序,目前您已將其“掛載”為空SCRIPT_NAME

mount:/ws=test.py

可調用的:app

(刪除'module'指令)就可以了。

我建議你避免使用nginx來管理SCRIPT_NAME,因為它不太聰明,使用modifier1 30實際上是一個丑陋的黑客。

只需從nginx中刪除uwsgi_param和uwsgi_modifier1,並向uWSGI添加manage-script-name:true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM