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.