nginx+flask+gunicorn+supervisor. Развертывание приложения. 18.04.1-Ubuntu
Пытаюсь развернуть небольшое приложение на Flask с использованием nginx и gunicorn, но когда запускаю nginx и обращаюсь к домену, то меня постоянно редиректит на default_server. Я сделал вывод, что nginx не видит мое приложение, скорее всего из-за неправильной конфигурации.
Вот структура проекта:
├── deploy/
├── gunicorn.conf.py
├── logs/
├── main.py
├── Makefile
├── __pycache__/
├── setup.cfg
├── templates/
├── venv_proxy/
└── wsgi.py
Прилагаю файлы:
- gunicorn.conf.py:
workers = 4
worker_class = 'sync'
max_requests = 50
max_requests_jitter = 10
loglevel = 'debug'
accesslog = 'logs/access.log'
errorlog = 'logs/error.log'
access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'
- *.supevisor.conf:
[program:custom_proxy]
command=/var/www/custom-proxy/venv_proxy/bin/gunicorn --config /var/www/custom-proxy/gunicorn.conf.py wsgi:app
user=<user>
directory=/var/www/custom-proxy
autostart=true
autorestart=true
redirect_stderr=true
stopsignal=QUIT
3.wsgi.py:
from main import app
if __name__ == "__main__":
app.run()
- В файле main.py всего два роута:
@app.route('/<path:url>')
def root(url):
pass
@app.route('/p/<path:url>', methods=['POST', 'GET'])
def proxy(url):
pass
- nginx:
upstream custom-proxy {
server unix:/tmp/custom-proxy.sock;
}
server {
listen *:80;
server_name <domain>;
access_log /var/log/nginx/custom_proxy.access.log;
error_log /var/log/nginx/custom_proxy.error.log;
location / {
include proxy_params;
proxy_pass http://custom-proxy;
}
}
Вот что я делал:
- Запустил супервизор.
- Сделал curl до сокета:
curl --unix-socket /tmp/custom-proxy.sock localhost/p/Когда я так делал, то получал ответ от сокета. Поэтому думаю, что сокет рабочий, на запросы отвечает. - Потом запустил nginx и сделал проксирование на этот сокет. При попытке перейти на назначенный domain, происходит перенаправление на default_server.
- С помощью команды sudo nginx -T увидел, что мой конфиг включился в основной.
- Просмотрел /var/log/nginx/error.log и ошибок по этому конфигу не обнаружил.
- В логе супервизора, тоже все хорошо.