저는 Docker 컨테이너(Omnibus 설치)에서 GitLab EE 인스턴스(v11.9.0)를 호스팅하고 있으며 SSL을 처리하기 위해 그 앞에 Apache 역방향 프록시(Docker가 아님)가 있습니다. 이제 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
.
에서 GitLab은 "축하합니다! 귀하의 페이지는 다음 위치에 제공됩니다. " [Project]/Settings/Pages
라고 말합니다 .http://namespace.customdomain.com/project
이제 아래 페이지를 방문하려고 하면 http://namespace.customdomain.com/project
GitLab의 404 오류 페이지가 표시됩니다.
여기서 좋은 점은 페이지 데몬으로 트래픽을 전달하는 것이 올바르게 작동한다고 확신한다는 것입니다. 로 페이지 데몬을 중지하면 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>