Estoy alojando una instancia de GitLab EE (v11.9.0) en un contenedor Docker (instalación Omnibus) y tengo un proxy inverso de Apache (no en Docker) delante para manejar SSL. Ahora me gustaría ofrecer páginas estáticas para algunos proyectos utilizando la funcionalidad GitLab Pages, lo que resulta un poco complicado con la configuración de Docker.
estoy siguiendoesta guía oficialpara lograr que mis páginas sean servidas bajo http://namespace.customdomain.com/projectname
. Agregué los registros DNS comodín y modifiqué el gitlab.rb
; estos son los cambios 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"
(Algunos de los cambios anteriores no siguen las instrucciones de la guía, lo sé. Pero tampoco funcionaron, así que seguí adelante y probé muchas cosas; este es solo el estado actual).
El puerto 81 está asignado al puerto 9081 de la máquina host y Apache tiene una entrada de host virtual para pasar el tráfico allí:
<VirtualHost *:80>
ServerAlias *.customdomain.com
<Location />
ProxyPass http://localhost:9081/
ProxyPassReverse http://localhost:9081/
</Location>
</VirtualHost>
Utilicé .gitlab-ci.yml
en un proyecto de ejemplo para producir un sitio web simple, que es solo un index.html
contenido hello world
. Este archivo está colocado correctamente en /var/opt/gitlab/gitlab-rails/shared/pages/[namespace]/[project]/public/index.html
.
En [Project]/Settings/Pages
, GitLab me dice: "¡Felicitaciones! Sus páginas se publican en: http://namespace.customdomain.com/project
".
Si ahora intento visitar la página debajo http://namespace.customdomain.com/project
, aparece la página de error 404 de GitLab.
Lo bueno aquí es que, por lo tanto, estoy bastante seguro de que la transferencia de tráfico al demonio de páginas funciona correctamente; si detengo el demonio de páginas con gitlab-ctl stop gitlab-pages
, la página 404 desaparece y aparece un error de proxy de Apache. Lo malo es que la publicación de páginas aún no funciona como se esperaba.
¿Alguien ha logrado publicar páginas de GitLab utilizando una configuración similar?
Respuesta1
Finalmente descubrí cuál era el problema. Simplemente agregue ProxyPreserveHost on
la configuración de Apache y todo funcionará bien. No puedo proporcionar ningún detalle sobre por qué esto funcionó, tal vez alguien con más experiencia con Apache pueda dar algunas ideas.
La configuración completa de vHost se ve así:
<VirtualHost *:80>
ServerAlias *.customdomain.com
<Location />
ProxyPreserveHost on
ProxyPass http://localhost:9081/
ProxyPassReverse http://localhost:9081/
</Location>
</VirtualHost>