Испытывая удачу, ее как StackOverflow спрашивать было не в том месте. Надеюсь, именно здесь мой вопрос!
Последние несколько дней я дергал себя за волосы, заставляя веб-сокеты работать с Apache2.4. Я наконец нашел решение, которое сработало для меня, а именно следующее:
<VirtualHost *:80>
ServerName www.domain2.com
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://localhost:3001/$1 [P,L]
ProxyPass / http://localhost:3001/
ProxyPassReverse / http://localhost:3001/
</VirtualHost>
Эта проблема? Что ж, как только я перехожу на wss, мне не повезло. Сначала я надеялся, что смогу просто изменить ws на wss выше, но это не помогло, я все еще получаю ошибку 500. Что я могу упустить? (Я использую socket.io, и запрос выглядит так: wss://xxx.yy/socket.io/?auth=YYY&EIO=3&transport=websocket&sid=XXX
У меня недавно была почти такая же проблема. Он работал с HTTP и WS, но когда я перешел на HTTPS и WSS, он перестал работать. Я немного повозился и как-то заставил это работать. Это мой рабочий конфиг:
<VirtualHost *:443>
ServerName blabla
#SSL-stuff
...
# I don't think this is important but it's there
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# Here's the fun stuff
<Location />
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule .* ws://localhost:3002%{REQUEST_URI} [P,L]
ProxyPass http://localhost:3001/
ProxyPassReverse http://localhost:3001/
</Location>
</VirtualHost>
Это не сильно отличается от твоего. Вместо того, чтобы искать путь и строку запроса для веб-сокета, он ищет заголовки обновления и подключения в HTTP-запросе, который сообщает, что он должен стать веб-сокетом.
Параметры URL и запроса будут обрабатываться вашим приложением.
Извините, я не могу точно сказать, что не так, но, надеюсь, моя конфигурация будет работать и в вашем случае