Sem saber nada sobre o GitLab, parece que seria bastante fácil fazer isso com hosts virtuais. Crie dois hosts virtuais, um com autenticação de cliente TLS para acesso do cliente e um segundo para acesso local do GitLab. Por exemplo:
server {
# Listen on your externally accessible address
listen 10.0.0.1:443;
ssl on;
server_name example.com;
ssl_certificate /etc/nginx/certs/server.crt;
ssl_certificate_key /etc/nginx/certs/server.key;
ssl_client_certificate /etc/nginx/certs/ca.crt;
ssl_verify_client on;
include shared.conf;
}
server {
# Listen on localhost or some internal-only address
listen 127.0.0.1:443;
ssl on;
server_name localhost;
ssl_certificate /etc/nginx/certs/server.crt;
ssl_certificate_key /etc/nginx/certs/server.key;
ssl_client_certificate /etc/nginx/certs/ca.crt;
ssl_verify_client optional;
include shared.conf;
}
Coloque qualquer configuração que deva ser compartilhada por ambos os hosts virtuais dentro de shared.conf
para evitar duplicação.