Примеры настройки WSS соединений

Шаг 1. Публикуем HTTPS порт на внешнем IP

Примечание: Если модуль находится за NAT, то настройки надо делать на соответствующем проксирующем устройстве.

Настройки для FreePBX с внешним адресом:

По умолчанию (если включен модуль Firewall) FreePBX блокирует все неизвестные ему порты. Добавим нужные в настройках файрвола:

пример ссылки на соответствующий пункт менюhttps://freepbx.example.com/admin/config.php?display=firewall

Шаг 2. В DNS прописываем запись для внешнего адреса, на котором опубликован модуль

Как правило, делается через личный кабинет провайдера, который обслуживает домен клиента.

Шаг 3. Выпускаем SSL сертификат

Если у клиента уже есть сертификат, то копируем файлы (сам сертификат, ключ) на сервер с модулем. Если сертификата нет, то выпускаем (Тут очень много вариантов решения).

Вариант выпуска бесплатного сертификата через FreePBX: https://freepbx.example.com/admin/config.php?display=certman

Шаг 4. Прописываем путь до сертификата в модуле

Сохраняем настройки.

Шаг 5. Указываем адрес веб-сокетов куда следует

Ссылка вида wss://freepbx.example.com:8078/…

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

В данном примере показано, как настроить WSS-соединение с использованием Nginx или Apache

Настройка для Nginx

  1. Открыть конфигурационный файл Nginx:

nano /etc/nginx/nginx.conf
  1. Добавить конфигурацию для WSS:

server {
    listen 443 ssl;
    server_name your_domain.com;

    ssl_certificate /etc/nginx/ssl/server.crt;   # Или путь к вашему SSL-сертификату от Let's Encrypt
    ssl_certificate_key /etc/nginx/ssl/server.key;

    location /ws/ {
        proxy_pass wss://freepbx.example.com:8078;   # Адрес вашего WebSocket сервера
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $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_read_timeout 86400;
        proxy_set_header Origin "";
    }
}
  1. Проверить конфигурацию и перезапустить Nginx:

nginx -t
systemctl restart nginx

Настройка для Apache

  1. Открыть конфигурационный файл Apache:

nano /etc/httpd/conf.d/ssl.conf
  1. Добавить или изменить блок конфигурации для WSS:

<VirtualHost *:443>
    ServerName your_domain.com

    SSLEngine on
    SSLCertificateFile /etc/httpd/ssl/server.crt   # Или путь к вашему SSL-сертификату от Let's Encrypt
    SSLCertificateKeyFile /etc/httpd/ssl/server.key

    <Location /ws/>
        ProxyPass "wss://freepbx.example.com:8078/"   # Адрес вашего WebSocket сервера
        ProxyPassReverse "wss://freepbx.example.com:8078/"
        ProxyPreserveHost On
        RequestHeader set Connection "upgrade"
        RequestHeader set Upgrade "websocket"
    </Location>
</VirtualHost>
  1. Перезапустить Apache:

systemctl restart httpd

Last updated