Apache: Websocket возвращает HTTP 200 через прокси при необходимости HTTP 101 - PullRequest
1 голос
/ 11 апреля 2019

Я пытаюсь запустить https://github.com/dynastic/place через прокси-сервер Apache. Все работает, кроме веб-сокета, возвращающего HTTP 200 вместо HTTP 101, что вызывает ошибки как в Chrome, так и в Firefox. Как я могу исправить эту проблему?

Прокси-сервер Apache 2.4 работает через тюрьму FreeNAS [192.168.0.2], а репозиторий (Place) работает на виртуальной машине Debian [192.168.0.3]. Прокси-сервер начинается с subdomain.domain.com и направляется к 192.168.0.3:3000. Все работает отлично, кроме веб-сокета, который возвращает HTTP 101 при подключении к http://192.168.0.3:3000, но возвращает HTTP 200 при подключении через https://subdomain.domain.com.

У меня везде есть файлы конфигурации, которые я могу предоставить при необходимости, но вот основной файл конфигурации. Конфигурация SSL определена в других файлах, и похоже, что проблема с SSL не возникает, поскольку я пытался использовать HTTP.

sites-enabled/place.conf:

<VirtualHost *:443>
ServerName subdomain.domain.com

ErrorLog /path/to/error.log
CustomLog /path/to/access.log combined

SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
<Location />
        ProxyPass http://192.168.0.3:3000/
        ProxyPassReverse http://192.168.0.3:3000/
</Location>
RequestHeader set Connection "Upgrade"

RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} ^Upgrade$ [NC]
RewriteRule .* wss://192.168.0.3:3000%{REQUEST_URI} [P]



</VirtualHost>

В файле Readme.md на репозитории Place GitHub он показывает репозиторий Nginx, который теоретически возвращает правильный код HTTP 101 (я тестировал локально). Apache неправильно возвращает код HTTP 200. В настоящее время я использую Apache для других служб на сервере, поэтому придерживаться этого было бы неплохо, но в этот момент мне, возможно, придется поискать другие варианты.

1 Ответ

0 голосов
/ 18 апреля 2019

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

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