Я пытаюсь настроить haproxy (1.5.8) в режиме обратного прокси, связываясь с каким-то виртуальным хостом, размещенным на старом сервере Unix. Haproxy будет находиться в DMZ, а веб-сервер - в LAN.
В основном хочу:
https://a.domain.com/lo -> http://a.b.c.d:5000/lo
https://a.domain.com/lp -> http://a.b.c.d:5500/lp
По умолчанию сервер Unix выдаст ошибку виртуального хоста, если я попытаюсь подключиться к http: //a.b.c.d: 5000 /, и отобразит веб-страницу, если я открою http: //a.b.c.d: 5000 / lo.
frontend ft1
mode http
option forwardfor
bind *:443 ssl crt /etc/ssl/certs.pem
use_backend bk_Lo if { path_beg /lo }
use_backend bk_Lp if { path_beg /lp }
default_backend bk_Lo
backend bk_Lo
mode http
server lo a.b.c.d:5000
backend bk_Lp
mode http
server lp a.b.c.d:5500
Но я не могу придумать, как правильно переписать url, я всегда получаю ошибку 503. Возможно ли это даже с haproxy? Может ли кто-нибудь указать мне правильное направление, чтобы решить эту проблему?
Спасибо за помощь.
Даврон
вам нужно добавить это в свой бэкэнд-раздел:
http-запрос set-header Host a.b.c.d
frontend ft1
mode http
option forwardfor
bind *:443 ssl crt /etc/ssl/certs.pem
use_backend bk_Lo if { path_beg /lo }
use_backend bk_Lp if { path_beg /lp }
default_backend bk_Lo
backend bk_Lo
mode http
server lo a.b.c.d:5000
**http-request set-header Host a.b.c.d**
backend bk_Lp
mode http
server lp a.b.c.d:5500
**http-request set-header Host a.b.c.d**
global
log 127.0.0.1 local0
maxconn 2000
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
log global
option dontlognull
option redispatch
retries 3
timeout connect 5000s
timeout client 1200000s
timeout server 1200000s
frontend http_proxy
mode http
bind *:443 ssl crt /etc/ssl/cert_for_a.pem crt /etc/ssl/cert_for_b.pem
option httplog
option http-server-close
acl a_domain_url hdr_beg(host) a.domain.com
use_backend bk_Lo if { path_beg /lo }
acl work_url hdr_beg(host) b.domain.com
use_backend bk_Lp if { path_beg /lp }
backend bk_Lo
mode http
server lo a.b.c.d:5000
backend bk_Lp
mode http
server lo a.b.c.d:5500