Nginx не работает с socket.io на производственном сервере - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть приложение-фляга, использующее расширение фляги-сокета.Он отлично работает на локальном компьютере, используя сервер 'socketio.run ()' или 'флеш-бег'.Я хочу, чтобы он работал с прокси-сервером nginx, и он работает на локальном компьютере с такой конфигурацией сервера nginx:

file /etc/nginx/sites-available/server.conf

server {
    listen 8080;
    location / {
        proxy_pass http://localhost:5000;
    }
}

Фактическое приложение работает на порту 5000 с помощью socketio.run (), который, как я слышал, также является хорошим рабочим сервером.Странно то, что он работает даже с таким сообщением: «Транспорт WebSocket недоступен. Установите eventlet или gevent и gevent-websocket для повышения производительности».Это также работает с этим предупреждением: «Flask-SocketIO работает под Werkzeug, WebSocket недоступен».(во-первых, когда я использую socketio.run (), во-вторых, с запущенной флягой)

Тем не менее, если я попытаюсь запустить то же самое на рабочем сервере, работает только часть http, а сокеты - нет.Поскольку я читаю всюду в Интернете, я должен указать заголовки Connection и Upgrade в конфигурации сервера nginx, которые я не понимаю почему и которые я тоже попробовал:

file /etc/nginx/sites-available/server.conf

server {
        listen 80;
        server_name servername.com;

        location / {
            proxy_pass http://127.0.0.1:5000;
        }

        location /socket.io/ {
            proxy_pass http://127.0.0.1:5000/socket.io;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
}

Результат тот же, сокеты не работают.Используя «работу фляги» с любым из конфигов, я получаю следующие сообщения отладки: 127.0.0.1 - - [04 / Feb / 2019 20:55:52] «GET /socket.io?EIO=3&transport=polling&t=MYwIxxF HTTP / 1.1»404. - Указатель не работает, но сервер получает его и отвечает 404, для чего я не вижу причин.

Мой локальный компьютер работает под управлением Kali Linux и nginx 1.13.12, удаленным является Ubuntu 18.04 с nginx 1.14.0 Сейчас я действительно не понимаю, какая конфигурация правильная, почему первая конфигурация работает на моем локальном компьютере и почему ни одна из конфигураций не работает на рабочем сервере и как мне интерпретировать это сообщение 404.Хотя есть несколько руководств в Интернете, он не работает со мной.

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 05 февраля 2019

Возможно, nginx не смог сопоставить местоположение /socket.io/ с /socket.io?EIO=3&transport=polling&t=MYwIxxF путем.Взгляните на документацию nginx по расположению , чтобы узнать, как вы можете составить сопоставление местоположения, соответствующее вашим потребностям.

...