Files
reverse-proxy/haproxy.cfg
T
PTah 6eb396279f HAProxy: sac.kalinamall.ru, allowlist git-sac-allowed и 1c-allowed
Добавлен SAC (192.168.160.145) с TLS на бэкенде. Git и SAC — IP из git-sac-allowed; 1С (erp) — из 1c-allowed. Обновлены README и docs/haproxy-install.md.
2026-06-01 12:00:18 +10:00

107 lines
4.9 KiB
INI
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HAProxy — периметровый reverse-proxy для kalinamall.ru
# Режим: TCP + SNI на 443 (TLS end-to-end, сертификаты GlobalSign wildcard на бэкендах)
#
# Проверка синтаксиса: haproxy -c -f haproxy.cfg
# Установка: скопируйте в /etc/haproxy/haproxy.cfg
# Allowlist: git-sac-allowed, 1c-allowed → /etc/haproxy/
global
log stdout format raw local0
maxconn 50000
# Раскомментируйте на Linux с syslog:
# log /dev/log local0
defaults
log global
mode tcp
option dontlognull
option tcplog
timeout connect 10s
timeout client 3600s
timeout server 3600s
# Для ActiveSync / больших вложений Exchange при необходимости увеличьте client/server
# -----------------------------------------------------------------------------
# HTTPS (443): маршрутизация по SNI → внутренние серверы с wildcard на 443
# Клиенты: ext, autodiscover (Exchange) / rds / erp / git / sac
# Git и SAC — allowlist git-sac-allowed; 1С (erp) — allowlist 1c-allowed
# Пути URL ( /owa, /ecp, /ews/, /mapi/ … ) HAProxy не разбирает — они внутри TLS; достаточно SNI ext.kalinamall.ru
# -----------------------------------------------------------------------------
frontend fe_https_sni
bind *:443
mode tcp
tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }
# SNI должен быть из списка (несколько acl с одним именем — логическое ИЛИ)
acl sni_known req_ssl_sni -i ext.kalinamall.ru
acl sni_known req_ssl_sni -i autodiscover.kalinamall.ru
acl sni_known req_ssl_sni -i rds.kalinamall.ru
acl sni_known req_ssl_sni -i erp.kalinamall.ru
acl sni_known req_ssl_sni -i git.kalinamall.ru
acl sni_known req_ssl_sni -i sac.kalinamall.ru
acl sni_git req_ssl_sni -i git.kalinamall.ru
acl sni_sac req_ssl_sni -i sac.kalinamall.ru
acl sni_erp req_ssl_sni -i erp.kalinamall.ru
acl src_git_sac_allowed src -f /etc/haproxy/git-sac-allowed
acl src_1c_allowed src -f /etc/haproxy/1c-allowed
# tcp-request обрабатываются до use_backend — reject ставим ДО use_backend, иначе предупреждение парсера
tcp-request content reject if !sni_known
tcp-request content reject if sni_git !src_git_sac_allowed
tcp-request content reject if sni_sac !src_git_sac_allowed
tcp-request content reject if sni_erp !src_1c_allowed
# OWA: https://ext.kalinamall.ru/owa — тот же поток, отдельное правило не требуется
use_backend be_exchange if { req_ssl_sni -i ext.kalinamall.ru }
use_backend be_exchange if { req_ssl_sni -i autodiscover.kalinamall.ru }
use_backend be_rds if { req_ssl_sni -i rds.kalinamall.ru }
use_backend be_erp if { req_ssl_sni -i erp.kalinamall.ru }
use_backend be_git if { req_ssl_sni -i git.kalinamall.ru }
use_backend be_sac if { req_ssl_sni -i sac.kalinamall.ru }
backend be_exchange
# fifth.kalinamall.ru (192.168.160.42) — внешние имена HTTPS: ext.kalinamall.ru, autodiscover.kalinamall.ru
server exch 192.168.160.42:443 check ssl verify none
backend be_rds
# k6a-dc3.b26.kalinamall.ru (192.168.160.40) — RDS слушает TLS на 4430; снаружи клиенты идут на rds.kalinamall.ru:443
server rds 192.168.160.40:4430 check ssl verify none
backend be_erp
# hp-serv.b26.kalinamall.ru (192.168.160.150) — erp.kalinamall.ru; снаружи только IP из 1c-allowed
server erp 192.168.160.150:443 check ssl verify none
backend be_git
# git.kalinamall.ru (192.168.160.129) — свой TLS-сертификат; снаружи только IP из git-sac-allowed
server git 192.168.160.129:443 check ssl verify none
backend be_sac
# sac.kalinamall.ru (192.168.160.145) — свой TLS-сертификат; снаружи только IP из git-sac-allowed
server sac 192.168.160.145:443 check ssl verify none
# -----------------------------------------------------------------------------
# SMTP (25): почтовый шлюз KSMG
# Внешнее имя: ksmg.kalinamall.ru
# -----------------------------------------------------------------------------
frontend fe_smtp
bind *:25
default_backend be_ksmg_smtp
backend be_ksmg_smtp
server ksmg 192.168.160.57:25 check
# -----------------------------------------------------------------------------
# Опционально: статистика (раскомментируйте и задайте пароль)
# -----------------------------------------------------------------------------
# frontend fe_stats
# bind *:8404
# mode http
# stats enable
# stats uri /stats
# stats refresh 10s
# stats auth admin:CHANGEME