§2024-06-05
How to https://munetaka.me:43410 HAProxy load balance server direct to h2nas03.yushei.com.tw:43410 with SSL
¶Step 1. edit /etc/haproxy/haproxy.cfg
as
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&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 dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend http_80_front
# bind *:443 ssl crt /etc/letsencrypt/live/munetaka.me/fullchain.pem key /etc/letsencrypt/live/munetaka.me/privkey.pem
bind *:443 ssl crt /etc/letsencrypt/live/munetaka.me/haproxy.pem
default_backend http_8088_back
backend http_8088_back
server nginx_server 127.0.0.1:8088 ssl verify none
# 2024-06-05 add nextCLoud
frontend front__nextCloud_45101
bind *:45101 ssl crt /etc/letsencrypt/live/munetaka.me/haproxy.pem
http-request set-header X-Forwarded-Proto https
default_backend back_nextCloud_45101
backend back_nextCloud_45101
server nextcloud_server hc4Noble.yushei.net:45101
# Caddy Server
frontend front_caddy_h2jammy_43889
bind *:43889 ssl crt /etc/letsencrypt/live/munetaka.me/haproxy.pem
default_backend back_caddy_h2jammy_43889
backend back_caddy_h2jammy_43889
server h2jammy_server h2Jammy.yushei.net:43889 ssl verify none
# YsMeeting Service
frontend front_ysmeeting_43410
bind *:43410 ssl crt /etc/letsencrypt/live/munetaka.me/haproxy.pem
default_backend back_ysmeeting_43410
backend back_ysmeeting_43410
server ysmeeting_server h2nas03.yushei.com.tw:43410 ssl verify none
root@pi3HAProxy:/home/alexlai#
# YsMeeting Service
frontend front_ysmeeting_43410
bind *:43410 ssl crt /etc/letsencrypt/live/munetaka.me/haproxy.pem
default_backend back_ysmeeting_43410
backend back_ysmeeting_43410
server ysmeeting_server h2nas03.yushei.com.tw:43410 ssl verify none
- check and restart
haproxy -c -f /etc/haproxy/haproxy.cfg
Configuration file is valid
root@pi3HAProxy:/home/alexlai# systemctl restart haproxy
root@pi3HAProxy:/home/alexlai# systemctl status haproxy
● haproxy.service - HAProxy Load Balancer
Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled; preset: enabled)
Active: active (running) since Wed 2024-06-05 13:47:25 CST; 8s ago
Docs: man:haproxy(1)
file:/usr/share/doc/haproxy/configuration.txt.gz
Main PID: 7939 (haproxy)
Status: "Ready."
Tasks: 5 (limit: 710)
Memory: 44.4M (peak: 44.8M)
CPU: 879ms
CGroup: /system.slice/haproxy.service
├─7939 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock
└─7943 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock
Jun 05 13:47:24 pi3HAProxy.munetaka.me systemd[1]: Starting haproxy.service - HAProxy Load Balancer...
Jun 05 13:47:25 pi3HAProxy.munetaka.me haproxy[7939]: [NOTICE] (7939) : New worker (7943) forked
Jun 05 13:47:25 pi3HAProxy.munetaka.me haproxy[7939]: [NOTICE] (7939) : Loading success.
Jun 05 13:47:25 pi3HAProxy.munetaka.me systemd[1]: Started haproxy.service - HAProxy Load Balancer.