Ошибка WebSocket “Неожиданное закрытие, повторное открытие websocket” после перемещения Focalboard в подкаталог в Nginx

Вопрос или проблема

Я пытаюсь настроить Focalboard для работы в определенной подсекции с использованием Nginx. Я следовал шагам из официальной документации Focalboard и смог нормально его настроить. Однако после перемещения Focalboard в подсекцию /focalboard соединение WebSocket начало показывать проблемы.

Конфигурация Nginx:

upstream focalboard {
   server localhost:8000;
   keepalive 32;
}

server {
   listen 443 ssl;
   server_name example.com;

   ssl_certificate /path/to/certificate.crt;
   ssl_certificate_key /path/to/certificate.key;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_ciphers HIGH:!aNULL:!MD5;

   # Конфигурация WebSocket
   location /focalboard/ws/ {
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       client_max_body_size 50M;
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       client_body_timeout 60;
       send_timeout 300;
       lingering_timeout 5;
       proxy_connect_timeout 1d;
       proxy_send_timeout 1d;
       proxy_read_timeout 1d;
       proxy_pass http://focalboard;
   }

   # Стандартная конфигурация для Focalboard
   location /focalboard/ {
       client_max_body_size 50M;
       proxy_set_header Connection "";
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       proxy_read_timeout 600s;
       proxy_cache_revalidate on;
       proxy_cache_min_uses 2;
       proxy_cache_use_stale timeout;
       proxy_cache_lock on;
       proxy_http_version 1.1;
       proxy_pass http://focalboard/;
   }
}

Конфигурация Focalboard config.json:

{
    "serverRoot": "https://example.com/focalboard",
    "port": 8000,
    "dbtype": "sqlite3",
    "dbconfig": "./focalboard.db",
    "postgres_dbconfig": "dbname=exampledb sslmode=disable",
    "useSSL": false,
    "webpath": "./pack",
    "filespath": "./files",
    "telemetry": true,
    "prometheusaddress": ":9092",
    "session_expire_time": 2592000,
    "session_refresh_time": 18000,
    "localOnly": false,
    "enableLocalMode": true,
    "localModeSocketLocation": "/var/tmp/example_local.socket"
}

После применения этой конфигурации я неоднократно получаю следующую ошибку:
Неожиданный закрытие, повторное открытие веб-сокета

Соединение WebSocket постоянно закрывается неожиданно и немедленно повторно открывается, что создает постоянный цикл.

  • Есть ли что-то неправильное или отсутствует в моей конфигурации WebSocket Nginx?
  • Как я могу устранить проблему с разъединением WebSocket при запуске Focalboard в подсекции?

Ответ или решение

Ошибка WebSocket "Неожиданный закрытие, повторное открытие WebSocket" после перемещения Focalboard в подкаталог Nginx

При настройке Focalboard в Nginx для работы в подкаталоге, пользователи могут столкнуться с проблемой, связанной с соединениями WebSocket, что проявляется в виде сообщения об ошибке: "Неожиданный закрытие, повторное открытие WebSocket". Давайте разберемся, что может быть причиной этой проблемы и как ее можно решить.

Анализ конфигурации Nginx

Ваш файл конфигурации Nginx выглядит в целом корректно, однако стоит обратить внимание на несколько ключевых моментов, которые могут вызывать проблемы с WebSocket:

  1. Корректность URL-адреса WebSocket:
    Убедитесь, что вы обращаетесь к WebSocket по правильному адресу. В вашем случае это должно быть wss://example.com/focalboard/ws/. Проверьте правильность прописки URL и его соответствие конфигурации сервера Focalboard.

  2. Перенаправление HTTP на WebSocket:
    Убедитесь, что ваш клиент может установить соединение с WebSocket. Проверьте, что проксирование настроено корректно и WebSocket получает запросы на правильный путь. Вам не нужно будет добавлять / в конце proxy_pass, так как вы уже указываете путь в location.

    location /focalboard/ws/ {
        proxy_pass http://focalboard; # уберите / в конце
    }
  3. Заголовки для WebSocket:
    Ваша конфигурация заголовков для WebSocket кажется правильной, однако важно убедиться в том, что передаются все необходимые заголовки. Попробуйте добавить proxy_http_version 1.1; и убедитесь, что он есть в секции, отвечающей за WebSocket.

Конфигурация Focalboard

Ваш файл config.json также должен корректно отражать путь, по которому доступен Focalboard. Временно измените значение для serverRoot, чтобы убедиться, что оно настроено правильно:

"serverRoot": "https://example.com/focalboard",

Проверка и отладка

  1. Логи Nginx:
    Проверьте логи ошибок Nginx для выявления любых дополнительных подсказок о том, что может вызывать проблему с WebSocket. Используйте команды вроде tail -f /var/log/nginx/error.log, чтобы в реальном времени наблюдать за ошибками.

  2. Сетевые инструменты:
    Используйте инструменты разработчика в вашем браузере (перейдите на вкладку "Сеть") для отслеживания запросов WebSocket. Обратите внимание на ответы, которые вы получаете от сервера, и проверьте, нет ли сообщений об ошибках.

  3. Тестирование локального подключения:
    Если возможно, попробуйте протестировать Focalboard без прокси. Запустите его локально на том же сервере, чтобы убедиться, что проблема именно в конфигурации Nginx.

Заключение

Ошибка "Неожиданный закрытие, повторное открытие WebSocket" может быть вызвана множеством факторов, но правильная настройка конфигурации Nginx и настроек Focalboard в большинстве случаев решит проблему. Убедитесь, что все пути и заголовки настроены правильно, и внимательно следите за логами, чтобы выявить причину неполадок.

Если после всех проверок и измений проблема осталась, рассмотрите возможность обращения к сообществу Focalboard или на платформы поддержки для получения дополнительной помощи, возможно, у других пользователей были схожие проблемы.

Оцените материал
Добавить комментарий

Капча загружается...