Я играл сегодня с сервером приложений Nginx Unit и Python 3. Он отлично работает, пока я запускаю простое приложение WSGI, но я не буду работать (404) при попытке использовать Flask...
Конфигурация nginx:
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 - так что это в основном работает, просто не получается, почему он не будет работать при вызове http://127.0. 0,1/UnitTest
Вопрос старый, но я считаю, что на него стоит ответить (так как он один из первых проиндексирован Google, если вы наберете Nginx Unit).
Поскольку вы не указали ни одного URI в директиве
proxy_pass
запрос передается в ваше приложение фляги с URI/unittest
и у вас явно нет маршрута, указанного в приложении фляги, кроме"/"