Você tentou a solução ingênua óbvia?
server {
[...ssl and servername stuff...]
location / {
# fake the hostname to the hostname that gitlab expects
#
proxy_set_header Host hostname-for-gitlabhost;
proxy_pass https://internal-gitlab-instance;
proxy_read_timeout 90;
}
}
Além disso, você pode definir o local para algo que permita apenas o
https://...../*.gitURLs
Isso deve funcionar:
Em vez de
location /acima, algo como:
location ~ ^/(.*\.git) {
proxy_set_header Host hostname-for-gitlabhost;
proxy_pass https://internal-gitlab-instance/$1;
proxy_read_timeout 90;
}
Isso captura o request-uri e o adiciona à chamada de proxy na declaração de localização.
Eu não tenho certeza se isso funciona, apenas digitei do topo da minha cabeça.