fast-je
@fast-je
Пишу на php.

Как заставить работать centrifugo c nginx?

Я установил centrifugo it's real-time messaging server.
Сделал вот такой конфиг.

{
    "secret": "a4b36637-1e1f-4865-840e-bed40c6253f9",
    "token_hmac_secret_key": "9adb9887-638a-4e39-badf-b276c64afbdc",
    "admin_password": "e21f5db0-fcf5-453c-89b7-9a5b9a8ab413",
    "admin_secret": "a4b36637-1e1f-4865-840e-bed40c6253f9",
    "api_key": "4271d87c-e014-40b0-886c-7778db912206",
    "prometheus": true,
    "debug": false,
    "anonymous": false,
    "client_insecure": false,
    "port": 8000,
    "address": "127.0.0.1",
    "namespaces": [
        {
            "name": "public",
            "publish": true,
            "watch": true,
            "anonymous": true,
            "presence": true,
            "join_leave": true,
            "recover": false,
            "history_size": 10,
            "history_lifetime": 30
        }
    ]
}


Добавил в nginx блок для centifugo как это показано тут

location /centrifugo/ {
        rewrite ^/centrifugo/(.*)        /$1 break;
        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:8000;
    }
    location /centrifugo/connection {
        rewrite ^/centrifugo(.*)        $1 break;

        proxy_next_upstream error;
        gzip on;
        gzip_min_length 1000;
        gzip_proxied any;
        proxy_buffering off;
        keepalive_timeout 65;
        proxy_pass http://127.0.0.1:8000;
        proxy_read_timeout 60s;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
    }


Когда я не запускаю centifugo и перехожу по ссылкам site.com/centrifugo/ site.com/centrifugo/admin и так далее крч по всем выдает 502.

Когда я запускаю centifugo и перехожу по ссылке site.com/centrifugo/ выдает 404 в консоле, site.com/centrifugo/admin, site.com/centrifugo/admin/auth/ прямо в html рисуется 404 page not found. site.com/centrifugo/connection/sockjs/ выдает Welcome to SockJS!
site.com/centrifugo/connection/websocket выдает bad request.
Но я уже понял что sockjs, websocket и api вроде работает проверил, кроме centrifugo/admin/auth/

Вообщем работает очень странно, почему может не работать веб интерфейс ?
Для запуска использую команду centrifugo -c config.json --admin
при запуске пишет в консоль
serving websocket, SockJS, API, admin, prometheus, debug, health endpoints on 127.0.0.1:8000

Я так понимаю что все запускается, но не работает почему-то веб-интерфейс.

Также когда пытаюсь подписать на privateChannel отправляет запрос на site.com/centrifuge/subscribe и еще в js файле есть site.com/centrifuge/refresh у меня nginx такие пути не обрабатываются и как вообще их нужно обрабатывать ?
Крч с таким js кодом выдает
wrong status code in AJAX response 404
{message: "authorization request failed", code: 0, channel: "$private", isResubscribe: false}

let privateSub = centrifuge.subscribe('$private', function (message) {
     console.log(message);
});

privateSub.on('error', (c) => console.log(c));


Как решать такую проблему ?

Когда нужно использовать generateConnectionToken, а когда generatePrivateChannelToken ?

Всем спасибо, заранее.

Для сервера стоит cloudflare, а через nginx пытаюсь наладить работу. Сервер работает через https.
  • Вопрос задан
  • 1703 просмотра
Решения вопроса 1
fast-je
@fast-je Автор вопроса
Пишу на php.
Вопрос решен, была неправильная настройка статических файлов в nginx.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Добейтесь сначала, чтобы у вас открывалось всё необходимое непосредственно по 8000 порту, а только потом накручивайте nginx, доменное имя и HTTPS.

И разделите как-то ваш мегавопрос на несколько отдельных.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы