У меня есть два приложения с потоковой подсветкой, прослушивающие локальный хост.
Apache настроен как обратный прокси-сервер для обработки https-соединений.
Конфигурация
Вот конфигурация, которую я использую:
Код: Выделить всё
/etc/apache2/sites-enabled/test-01.dharmatech.dev-streamlit-apps.conf:
ServerAdmin webmaster@localhost
ServerName test-01.dharmatech.dev
# ServerAlias www.test-01.dharmatech.dev
DocumentRoot /var/www/test-01.dharmatech.dev
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
# ----------------------------------------------------------------------
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /hello-1/(.*) ws://127.0.0.1:8511/hello-1/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /hello-1/(.*) http://127.0.0.1:8511/hello-1/$1 [P,L]
ProxyPass /hello-1 http://127.0.0.1:8511/hello-1
ProxyPassReverse /hello-1 http://127.0.0.1:8511/hello-1
ProxyPass /hello-1 ws://127.0.0.1:8511/hello-1
ProxyPassReverse /hello-1 ws://127.0.0.1:8511/hello-1
# ----------------------------------------------------------------------
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /hello-2/(.*) ws://127.0.0.1:8512/hello-2/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /hello-2/(.*) http://127.0.0.1:8512/hello-2/$1 [P,L]
ProxyPass /hello-2 http://127.0.0.1:8512/hello-2
ProxyPassReverse /hello-2 http://127.0.0.1:8512/hello-2
ProxyPass /hello-2 ws://127.0.0.1:8512/hello-2
ProxyPassReverse /hello-2 ws://127.0.0.1:8512/hello-2
# ----------------------------------------------------------------------
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/test-01.dharmatech.dev/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/test-01.dharmatech.dev/privkey.pem
Код: Выделить всё
https://test-01.dharmatech.dev/hello-1 -> http://127.0.0.1:8511/hello-1
https://test-01.dharmatech.dev/hello-2 -> http://127.0.0.1:8512/hello-2
Фактические строки, используемые для настройки обратного прокси-сервера для приложения, следующие:
Код: Выделить всё
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /hello-1/(.*) ws://127.0.0.1:8511/hello-1/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /hello-1/(.*) http://127.0.0.1:8511/hello-1/$1 [P,L]
ProxyPass /hello-1 http://127.0.0.1:8511/hello-1
ProxyPassReverse /hello-1 http://127.0.0.1:8511/hello-1
ProxyPass /hello-1 ws://127.0.0.1:8511/hello-1
ProxyPassReverse /hello-1 ws://127.0.0.1:8511/hello-1
Как видите, приложение использует веб-сокеты.
Пока что все работает нормально.
Это рекомендуемый подход для настройки обратного прокси-сервера для приложения, использующего веб-сокеты?
/>Любые предложения и рекомендации приветствуются. Если есть лучший или более идиоматический способ выразить это, мне было бы интересно об этом услышать.
Примечание: я открыт для использования других инструментов. Поэтому, если какой-либо другой инструмент, например nginx, haproxy и т. д., больше подходит для такой настройки, не стесняйтесь предложить и его.
Подробнее здесь: https://stackoverflow.com/questions/792 ... -localhost
Мобильная версия