0

我们正在开发一个烧瓶应用程序,但在尝试配置服务器 4 小时后我无法弄清楚。

事情是这样的:

  • 虚拟机可通过 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 配置文件:

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 因为它不太聪明,并且使用 modify1 30 确实是一个丑陋的黑客。

只需从 nginx 中删除 uwsgi_param 和 uwsgi_modifier1 并将 manage-script-name: true 添加到 uWSGI

于 2012-11-24T17:07:00.720 回答