GitLab Pages с GitLab Omnibus в Docker + голый обратный прокси-сервер Apache

Я размещаю экземпляр GitLab EE (v11.9.0) в контейнере Docker (установка Omnibus) и имею обратный прокси-сервер Apache (не в Docker) перед ним для обработки SSL. Теперь я хотел бы обслуживать статические страницы для некоторых проектов, используя функциональность GitLab Pages, что немного сложно с настройкой Docker.

Я следую этому официальному руководству, чтобы мои страницы обслуживались http://namespace.customdomain.com/projectname, Я добавил подстановочные записи DNS и возился с gitlab.rb; это соответствующие изменения:

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"

(Некоторые из вышеперечисленных изменений не соответствуют инструкциям из руководства, я знаю. Но они тоже не сработали, поэтому я много чего пробовал, это только текущий статус.)

Порт 81 сопоставлен с портом 9081 хост-машины, и у Apache есть запись виртуального хоста для передачи туда трафика:

<VirtualHost *:80>
    ServerAlias *.customdomain.com

    <Location />
        ProxyPass http://localhost:9081/
        ProxyPassReverse http://localhost:9081/
    </Location>

</VirtualHost>

Я использовал .gitlab-ci.yml в примере проекта для создания простого веб-сайта, который просто index.html с hello world в этом. Этот файл правильно помещен в /var/opt/gitlab/gitlab-rails/shared/pages/[namespace]/[project]/public/index.html,

В [Project]/Settings/PagesGitLab говорит мне: "Поздравляю! Ваши страницы обслуживаются под: http://namespace.customdomain.com/project"

Если я сейчас попробую посетить страницу под http://namespace.customdomain.com/project, Я получаю страницу ошибки 404 GitLab.

Хорошо, что я уверен, что передача трафика на демон страниц работает правильно - если я остановлю демон страниц с помощью gitlab-ctl stop gitlab-pages, страница 404 исчезает, и я получаю ошибку прокси от Apache. Плохо то, что страницы обслуживания по-прежнему не работают, как ожидалось.

Кому-нибудь удалось обслужить страницы GitLab, используя подобную установку?

1 ответ

Я наконец понял, в чем проблема. Просто добавь ProxyPreserveHost on в конфиге Apache и все работает хорошо. Я не могу предоставить какие-либо подробности о том, почему это удалось, может быть, кто-то более опытный с Apache может дать некоторые идеи.

Полная конфигурация vHost выглядит следующим образом:

<VirtualHost *:80>

    ServerAlias *.customdomain.com

    <Location />       
        ProxyPreserveHost on
        ProxyPass http://localhost:9081/
        ProxyPassReverse http://localhost:9081/
    </Location>

</VirtualHost>

Другие вопросы по тегам