Не могу SSH войти в GitLab, когда он доступен через HAProxy
У меня есть экземпляр GitLab в docker-compose на виртуальной машине в моей домашней сети.
Он работает за прокси HAProxy и доступен на git.example.com:443
,
Чтобы иметь доступ к ним как внутри моей домашней сети, так и за ее пределами, я должен иметь точку DNS git.example.com
на адрес HAProxy.
Из-за этого, когда я пытаюсь SSH git.example.com
, он пытается SSH в прокси-сервер вместо этого.
Поэтому я пытаюсь переслать его так, чтобы, если кто-то пытается подключиться к SSH, ssh.git.example.com:22
(или порт 443), он будет перенаправлен на media.lan.example.com:4002
, потому что порт 4000
/4001
/4002
порт использует докер для контейнера для портов 80
/443
/22
соответственно.
Как мне этого добиться? Чтобы иметь возможность SSH на порт 22
или же 443
в ssh.git.example.com
без необходимости изменения клиентом конфигурации.
Мой конфиг HAProxy:
frontend http
bind example.com:80
reqadd X-Forwarded-Proto:\ http
mode http
use_backend gitlab-backend if { hdr(host) -i git.example.com }
frontend https
bind example.com:443 ssl crt /certs/cert.pem
mode http
use_backend gitlab-backend if { hdr(host) -i git.example.com }
backend gitlab-backend
redirect scheme https if !{ ssl_fc }
server gitlab1 media.lan.example.com:4001 ssl check verify none
mode http
backend gitlab-ssh-backend
redirect scheme https if !{ ssl_fc }
mode tcp
server gitlabssh1 media.lan.example.com:4002 check
frontend gitlab-ssh-frontend
bind ssh.git.example.com:443 ssl crt /certs/cert.pem
use_backend gitlab-ssh-backend
mode tcp