Páginas GitLab com GitLab Omnibus no Docker + proxy reverso Apache nu

Páginas GitLab com GitLab Omnibus no Docker + proxy reverso Apache nu

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.ymlem um projeto de exemplo para produzir um site simples, que é apenas um index.htmlconteú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 ona 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>

informação relacionada