WebUI за reverse proxy

Одолел я, хвала аллаху, этого монстра… Если кому интересно - прикладываю патч, который позволяет делать именно то, про что я спрашивал: устраивать внешний reverse proxy с SSL и аутентификацией для доступа из интернета к WB во внутренней сети.
Идея в том, что теперь, в зависимости от того, по какому протоколу (http/https) открыта страница homeui, подключение идёт через ws или через wss. И плюс к этому стало допустимо оставлять в настройках поле port/порт пустым. В этом случае подключение по websockets устанавливается с тем же портом, что и основная страница (что позволяет использовать https-сессию с той же авторизацией).

Конфигурация reverse proxy получается простейшая. Для apache она будет, в общих чертах, выглядеть так:

<VirtualHost _default_:4443>
	SSLEngine on
    ProxyPreserveHost On
    ProxyPass /mqtt ws://ip.internal.srv:18883
    ProxyPassReverse /mqtt ws://ip.internal.srv:18883
    ProxyPass / http://ip.internal.srv:80/
    ProxyPassReverse / http://ip.internal.srv:80/

    ServerName ip.external.srv

    <Proxy *>
            Order deny,allow
            Allow from all
            Authtype Basic
            Authname "Password Required"
            AuthUserFile /etc/apache2/.htpasswd
            Require valid-user
    </Proxy>
<VirtualHost _default_:4443>

это в предположении, что apache слушает на порту 4443 вашего сервера ip.external.srv, который одним концом смотрит в интернет, а другим - во внутреннюю сеть, где по адресу ip.internal.srv доступен WirenBoard

homeui.patch (3.6 КБ)

2 лайка