Помогите настроить связку Nginx-Tornado-Websocket.
Через Nginx получается загрузить только статику, переключения на Websocket нет.
Автономно (без Nginx) приложение Tornado нормально работает на 9001 порту, по таким настройкам.
define("port", default=9001)
Хендлеры:
handlers = [
(r"/", MainHandler),
(r"/botsocket", BotSocketHandler),
]
Переключение на Websocket (js):
var url = "ws://IP_сервера/botsocket";
Настройки Nginx (все закомментированные директивы, это мои тщетные попытки подобрать рабочую конфигурацию):
worker_processes 2;
#user root;
user nginx;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream websocket {
server IP_сервера:9001;
#server 127.0.0.1:9001;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
keepalive_timeout 86400;
proxy_connect_timeout 86400;
proxy_send_timeout 86400;
proxy_read_timeout 86400;
server {
listen 80;
location ^~ /static/ {
root /var/www/python/test/;
if ($query_string) {
expires max;
}
}
# WebSocket.
location /botsocket {
proxy_http_version 1.1;
#proxy_set_header Connection "upgrade";
proxy_set_header Connection $connection_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://websocket;
#proxy_pass http://websocket/botsocket;
#proxy_pass http://IP_сервера:9001/botsocket;
#proxy_pass http://127.0.0.1:9001/botsocket;
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://127.0.0.1:9001/;
}
}
}
В текущей конфигурации Nginx, в ответ на запрос, на переключение на Websocket, получаю
403 ошибку.
Замена пользователя в конфигурации Nginx, с
nginx на
root, также ничего не меняет.
Помогите советом, уже вторые сутки бесплодно копаюсь в гугле по чужим конфигам, которые у меня никак не работают.