Я пытаюсь запустить 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 для других служб на сервере, поэтому придерживаться этого было бы неплохо, но в этот момент мне, возможно, придется поискать другие варианты.