Расположение для передачи событий флеш-сокета на сервер uWSGI через прокси-сервер nginx в Docker - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь использовать события Socket-IO (основанные на Flask-SocketIO) с моими настройками uwsgi и nginx в Docker. Я не уверен, как мне настроить мой файл nginx, чтобы разрешить сокетное соединение между клиентом и сервером. Вот моя текущая конфигурация nginx:

server {
    listen 80;
    server_name _;

    location / {
        try_files $uri @app;
    }

    location @app {
        include /etc/nginx/uwsgi_params;
        uwsgi_pass myapp:8080;
    }

    location /socket.io {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        uwsgi_pass myapp:8080/socket.io;
    }
}

Докер Состав:

version: '3.5'
services:
  web_server:
    container_name: nginx
    external_links:
      - app
    build:
      context: .
      dockerfile: server/Dockerfile
    ports:
      - 80:80
    depends_on:
      - app
  app:
    container_name: myapp
  build:
      context: .
      dockerfile: application/Dockerfile
    expose:
      - 8080

Заранее спасибо!

1 Ответ

0 голосов
/ 03 июня 2019

В документации Flask-SocketIO приведен пример конфигурации nginx. Вот отсюда блок локации Socket.IO:

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

Вся конфигурация здесь .

Вы используете uwsgi_pass, который, насколько я понимаю, не поддерживает прокси-соединения WebSocket. Используйте HTTP, как показано в этом примере.

...