У меня есть экземпляр GitLab в docker-compose на виртуальной машине в моей домашней сети.
Он работает за прокси-сервером HAProxy и доступен на git.example.com:443
.
Чтобы иметь доступ к ним как внутри моей домашней сети, так и за ее пределами, я должен иметь DNS-точку git.example.com
по адресу HAProxy.
Из-за этого, когда я пытаюсь использовать SSH для git.example.com
, он пытается вместо этого подключиться к прокси-серверу.
Поэтому я пытаюсь переслать его, чтобы, если кто-то попытается выполнить SSH на ssh.git.example.com:22
(или на порту 443), он перенаправит его на media.lan.example.com:4002
, потому что порт 4000
являются портами докер использует для контейнера для портов 80
, соответственно.
Как мне этого добиться? Чтобы иметь возможность 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