使用nginx Unit运行Python Flask应用程序

时间:2018-06-17 18:58:34

标签: python nginx flask

我今天玩的是nginx Unit应用服务器和Python 3.只要我运行一个简单的WSGI应用程序就可以正常工作,但是当我尝试使用Flask时,我不会工作(404)...... / p>

nginx config:

upstream unit_backend {
    server 127.0.0.1:8300;
}

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    server_name _;

    location / {

    }

    location /unittest {
            proxy_pass http://unit_backend;
            proxy_set_header Host $host;
    }
}

单位配置:

{
"listeners": {
    "*:8300": {
        "application": "test"
    }
},

"applications": {
    "test": {
        "type": "python 3.5",
        "processes": 4,
        "user": "noisefloor",
        "group": "noisefloor",
        "path": "/home/noisefloor/code/unit_test",
        "module": "wsgi"
    }
},

"access_log": "/var/log/access.log"
}

wsgi.py在浏览器中打开http://127.0.0.1/unittest时有效:

from datetime import datetime

def application(environ, start_response):
    status = '200 OK'
    headers = [('Content-type', 'text/plain; charset=utf-8')]
    start_response(status, headers)
    text = 'Hello World @ {}'.format(datetime.now())
    return [text.encode('utf-8')]

当wsgi.py如下:

from flask import Flask

    application = Flask(__name__)

    @application.route('/')
    def test():
        return 'Hello Flask!'

它获得了404,但是我看到了在调用http://127.0.0.1:8300时我希望看到的内容 - 所以它基本上有用,它只是不知道为什么它在调用时不会工作{{3 }}

1 个答案:

答案 0 :(得分:0)

这个问题很旧,但我认为它是一个值得回答的问题(因为如果您键入Nginx Unit,它是Google索引的第一个索引)。

  

由于您没有在proxy_pass指令中指定任何URI,因此   请求通过/unittest URI传递到烧瓶应用程序,您   显然,除了烧瓶应用程序中没有指定任何其他途径   "/"