
Estou hospedando uma instância do GitLab EE (v11.9.0) em um contêiner Docker (instalação Omnibus) e tenho um proxy reverso Apache (não no Docker) na frente dele para lidar com SSL. Agora eu gostaria de servir páginas estáticas para alguns projetos usando a funcionalidade GitLab Pages, o que acaba sendo um pouco complicado com a configuração do Docker.
estou seguindoeste guia oficialpara conseguir que minhas páginas sejam veiculadas em http://namespace.customdomain.com/projectname
. Adicionei os registros DNS curinga e alterei o gitlab.rb
; estas são as mudanças relevantes:
pages_external_url "http://customdomain.com/"
gitlab_pages['enable'] = true
gitlab_pages['external_http'] = ['0.0.0.0:81']
gitlab_pages['inplace_chroot'] = true
pages_nginx['enable'] = true
gitlab_rails['pages_path'] = "/var/opt/gitlab/gitlab-rails/shared/pages"
(Algumas das alterações acima não estão de acordo com as instruções do guia, eu sei. Mas também não funcionaram, então fui em frente e tentei bastante, este é apenas o status atual.)
A porta 81 é mapeada para a porta 9081 da máquina host e o Apache possui uma entrada de host virtual para passar o tráfego para lá:
<VirtualHost *:80>
ServerAlias *.customdomain.com
<Location />
ProxyPass http://localhost:9081/
ProxyPassReverse http://localhost:9081/
</Location>
</VirtualHost>
Usei o .gitlab-ci.yml
em um projeto de exemplo para produzir um site simples, que é apenas um index.html
conteúdo hello world
. Este arquivo está corretamente colocado em /var/opt/gitlab/gitlab-rails/shared/pages/[namespace]/[project]/public/index.html
.
No [Project]/Settings/Pages
, o GitLab me diz: "Parabéns! Suas páginas são veiculadas em: http://namespace.customdomain.com/project
" .
Se eu tentar visitar a página abaixo http://namespace.customdomain.com/project
, recebo a página de erro 404 do GitLab.
O bom aqui é que tenho quase certeza de que o envio de tráfego para o daemon de páginas funciona corretamente – se eu interromper o daemon de páginas com gitlab-ctl stop gitlab-pages
, a página 404 desaparece e recebo um erro de proxy do Apache. O ruim é que a veiculação de páginas ainda não funciona conforme o esperado.
Alguém conseguiu servir páginas do GitLab usando uma configuração semelhante?
Responder1
Finalmente descobri qual era o problema. Basta adicionar ProxyPreserveHost on
a configuração do Apache e tudo funcionará perfeitamente. Não posso fornecer detalhes sobre por que isso funcionou, talvez alguém mais experiente com o Apache possa fornecer alguns insights.
A configuração completa do vHost é assim:
<VirtualHost *:80>
ServerAlias *.customdomain.com
<Location />
ProxyPreserveHost on
ProxyPass http://localhost:9081/
ProxyPassReverse http://localhost:9081/
</Location>
</VirtualHost>