HAProxy
HAProxy — хорошо известный, высокопроизводительный обратный прокси. Современный HAProxy (2.x и новее) прозрачно проксирует WebSocket-чат Owncast при условии установки большого значения timeout tunnel, поэтому отдельный WebSocket-бэкенд не нужен.
Ниже указанный haproxy.cfg завершает TLS на портах 80 и 443 и перенаправляет трафик на Owncast на порт 8080. Ожидается, что ваша цепочка сертификатов и приватный ключ объединены в один PEM-файл по адресу /etc/haproxy/certs/owncast.pem. С помощью Let's Encrypt вы можете собрать этот файл командой cat fullchain.pem privkey.pem > /etc/haproxy/certs/owncast.pem. Измените путь к сертификату и адрес бэкенда 127.0.0.1:8080, чтобы они соответствовали вашей конфигурации.
haproxy.cfg
global
log /dev/log local0
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
maxconn 16384
# SSL defaults, see https://ssl-config.mozilla.org/#server=haproxy&config=intermediate
ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
defaults
log global
mode http
option httplog
option forwardfor
timeout connect 5s
timeout client 50s
timeout server 50s
# Keep long-lived WebSocket (chat) connections open
timeout tunnel 1h
frontend tls
bind :80
bind :443 ssl crt /etc/haproxy/certs/owncast.pem
# Send all plain HTTP to HTTPS
http-request redirect scheme https code 301 unless { ssl_fc }
default_backend owncast
backend owncast
http-request set-header X-Forwarded-Port %[dst_port]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
server server1 127.0.0.1:8080 check
Improve this page
See something missing or incorrect? Edit this page and improve the documentation for everyone.

