Привет!
Есть сервер Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-53-generic x86_64)
Решил задеплоить aiohttp
по примеру с документации. Только в более упрощенном виде.
Мой NGINX config:
upstream aiohttp_chat {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name example.com;
error_log /var/log/nginx/error.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect off;
proxy_pass http://aiohttp_chat;
proxy_read_timeout 200;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Supervisord config:
[program:chat]
command=/home/ubuntu/www/venv/bin/python /home/ubuntu/www/aiohttp-chat/app.py
directory=/home/ubuntu/www/aiohttp-chat
user=nobody
autostart=true
autorestart=true
stderr_logfile=/var/log/supervisor/chat.err.log
stdout_logfile=/var/log/supervisor/chat.out.log
Aiohttp router:
router = app.router
router.add_route('GET', '/chat/{channel}/{token}/', handlers.websocket_handler)
Запускаю:
loop = asyncio.get_event_loop()
app = loop.run_until_complete(get_app())
web.run_app(app)
При попытке подключения (ws://example.com/chat/1/dsfbgrgbre432t325q/) через какой-либо онлайновый вебсокет клиент или через расширение в хроме, я получаю ошибку undefined.
Непонятно, что именно не работает - nginx error.log пуст, в access.log видно, что кто-то пытается достучаться, но попытки заканчиваются на 404.
Supervisord работает исправно - status RUNNING.
Нужно ли в Nginx в блоке location писать regex моего router'a?
Подскажите, в чем моя проблема?