Назад | Перейти на главную страницу

Apache2 WSS-перезапись

Испытывая удачу, ее как 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 и запроса будут обрабатываться вашим приложением.

Извините, я не могу точно сказать, что не так, но, надеюсь, моя конфигурация будет работать и в вашем случае