Websocket с Apache 2.4.52 и Ubuntu

Websocket с Apache 2.4.52 и Ubuntu

Я пытаюсь следовать руководству, расположенному здесь, для системы обмена сообщениями с использованием RatChet PHP. https://www.twilio.com/blog/create-php-websocket-server-build-real-time-even-driven-application У меня есть домен example.com, на котором есть обычная HTML-страница, и мне нужно обслуживать его как обычный веб-сайт. Для системы обмена сообщениями мне нужен порт 8445.

Итак, я установил Apache2 на Ubuntu 22.04, установил Lets Encrypt SSL, сайт работает нормально.

Теперь я хочу настроить сервер WebSocket, поэтому открыл TCP-порт 8445 в брандмауэре.

включены модули apache

a2enmod proxy a2enmod proxy_http a2enmod proxy_wstunnel

Я заменил свой исходный домен на example.com

мой файл conf выглядит как example.com.conf

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog /var/www/example.com/public_html/logs/error.log
    CustomLog /var/www/example.com/public_html/logs/access.log combined

        ProxyRequests Off
        ProxyPass / https://example.com:8445/
        ProxyPassReverse / https://example.com:8445/

</VirtualHost>

и

пример.com-le-ssl.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    SSLEngine On
    SSLProxyEngine On
    ServerAdmin [email protected]
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html
    ErrorLog /var/www/example.com/public_html/logs/error.log
    CustomLog /var/www/example.com/public_html/logs/access.log combined

        ProxyRequests Off
        ProxyPass / wss://example.com:8445/
        ProxyPassReverse / https://example.com:8445/


Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
<Location />
        ProxyPassReverse /

        Options FollowSymLinks
        Require all granted
    </Location>

</VirtualHost>
</IfModule>

Когда я пытаюсь подключиться, я получаю ошибку 503, а в журнале Apache написано следующее:

[proxy_http:error] [pid 20090] [client 49.34.XX:55961] AH01114: HTTP: не удалось установить соединение с бэкендом: example.com [Sat Dec 03 16:47:04.378489 2022] [proxy:error] [pid 20091] (111)В соединении отказано: AH00957: wss: попытка подключения к 45.33.XX:8445 (example.com) не удалась

Дайте мне знать, если кто-нибудь здесь может помочь мне решить проблему.

Спасибо!

решение1

Похоже, проблема в том, что прокси-сервер Apache не может подключиться к внутреннему серверу через порт 8445. Чтобы устранить эту неполадку, можно проверить несколько вещей:

Убедитесь, что сервер websocket запущен и прослушивает порт 8445. Для проверки можно использовать команду netstat:

sudo netstat -tlnp | grep 8445

Если сервер веб-сокетов запущен, вы должны увидеть строку, которая выглядит следующим образом:

tcp        0      0 0.0.0.0:8445            0.0.0.0:*               LISTEN      <websocket server PID>/websocket

Убедитесь, что нет брандмауэров или групп безопасности, блокирующих трафик на порт 8445. Вы можете проверить это, попытавшись подключиться к серверу веб-сокетов с самого сервера:

telnet localhost 8445

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

Проверьте, что сервер веб-сокетов настроен на прием соединений с прокси-сервера Apache. В зависимости от используемого сервера веб-сокетов, это может включать установку определенного IP-адреса или имени хоста для прослушивания или настройку списков управления доступом (ACL) для разрешения соединений с IP-адреса сервера Apache.

Проверьте журналы сервера веб-сокетов на предмет наличия сообщений об ошибках, указывающих на причину отклонения соединения.

Связанный контент