Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

참고 : 이 문서는 Omnibus GitLab 설치를 위한 것이며, 소스에서 GitLab을 설치 한 경우 GitLab Pages administration for source installations 참조.

개요

GitLab Pages는 Go로 작성된 간단한 HTTP 서버인 GitLab Pages 데몬을 사용하여 외부 IP 주소를 수신하고 사용자 지정 도메인 및 사용자 지정 인증서를 지원할 수 있습니다.

  • 와일드 카드 도메인이 아닌 사용자 정의 도메인 의 경우 Pages 데몬은 포트 80 /443에서 수신.

  • 보조 IP 에서 수신 대기하는 GitLab과 동일한 서버에서 Pages 데몬을 실행.

  • 별도의 서버에서 Pages 데몬을 실행. 
    (Pages 데몬이 설치된 서버에 Pages 경로도 있어야하므로 네트워크를 통해 공유해야함)

  • 동일한 IP에서 다른 포트에서 수신 대기하면서 GitLab과 동일한 서버에서 Pages 데몬을 실행(로드 밸런서로 트래픽을 프록시 해야함) 해당 경로를 선택하면 HTTPS에 TCP로드 밸런싱을 사용해야하며, TLS 종료 (HTTPS-로드 밸런싱)를 사용하면 사용자가 제공 한 인증서로 페이지를 제공 할 수 없습니다. 
    (HTTP의 경우 HTTP 또는 TCP로드 밸런싱을 사용하는 것을 권장)

전제 조건

페이지 구성을 진행하기 전에 다음을 수행해야합니다.

...

Info

참고 : GitLab 인스턴스 및 Pages 데몬이 개인 네트워크 또는 방화벽 뒤에 배포 된 경우 GitLab Pages 웹 사이트는 개인 네트워크에 액세스 할 수있는 장치 / 사용자 만 액세스 할 수 있습니다.

Public Suffix List에 도메인 추가

Public Suffix List 하위 도메인을 처리하는 방법을 결정하는 브라우저에서 사용되며 GitLab 인스턴스를 통해 일반 구성원이 GitLab Pages 사이트를 만들 수 있으면 해당 사용자가 페이지 도메인 ( example.io) 에 하위 도메인을 만들 수도 있습니다. 도메인을 공개 접미사 목록에 추가하면 브라우저가 다른 무엇보다도 슈퍼 쿠키를 허용하지 않습니다 .

지침에 따라 GitLab 페이지 하위 도메인을 제출합니다. 예를 들어 도메인이 example.io인 경우 Public Suffix List에 추가하도록 요청해야 합니다.

DNS 구성

DNS 서버 / 제공자 에서 GitLab이 실행하는 호스트를 가리키는 wildcard DNS A record를 추가해야 합니다. 
예를 들어, 항목은 다음과 같습니다.

...

Info

참고 : GitLab 도메인을 사용하여 사용자 페이지를 제공해서는 안됩니다. 자세한 내용은 보안 섹션을 참조.

구성

필요에 따라 4 가지 방식으로 GitLab Pages를 설정할 수 있습니다.

다음 예제는 가장 쉬운 설정에서 가장 고급 설정에 이르기까지 나열되어 있습니다. 최소 요구 사항은 모든 구성에 필요하므로 와일드 카드 DNS를 설정하는 것입니다.

와일드 카드 도메인

요구 사항 :

...

URL 체계 : http://page.example.io

...

  1. GitLab 페이지의 외부 URL을 다음 위치에 설정하십시오 /etc/gitlab/gitlab.rb.

    Code Block
    pages_external_url 'http://example.io'
    
  2. GitLab을 재구성.

TLS를 지원하는 와일드 카드 도메인

요구 사항 :

...

  1. /etc/gitlab/ssl에 인증서와 키를 안에 넣습니다

  2.  /etc/gitlab/gitlab.rb에서 다음과 같은 구성을 지정합니다 :

    Code Block
    pages_external_url 'https://example.io'
    
    pages_nginx['redirect_http_to_https'] = true
    pages_nginx['ssl_certificate'] = "/etc/gitlab/ssl/pages-nginx.crt"
    pages_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/pages-nginx.key"
    

    pages-nginx.crt와 pages-nginx.key은 각각의 SSL 인증서 및 키입니다.

  3. GitLab을 재구성.

Docker 컨테이너에 대한 추가 구성

GitLab Pages 데몬은 Docker 컨테이너에서 실행될 때 마운트를 바인딩 할 권한이 없습니다. 

...

Info

참고 : 페이지 액세스 제어inplace_chroot 와 같은 다른 기능에서는 옵션이 작동하지 않을 수 있습니다 . GitLab 페이지 README는 주의 사항 및 해결 방법에 대한 자세한 정보가 있습니다.

글로벌 설정

아래는 Omnibus GitLab의 Pages에 알려진 모든 구성 설정과 그 기능에 대한 표입니다. 이 옵션은에서 조정할 수 있으며 /etc/gitlab/gitlab.rb Gitlab을 재구성한 후에 적용됩니다 . Pages 데몬이 환경에서 컨텐츠를 실행하고 제공하는 방법을보다 세밀하게 제어해야하는 경우가 아니면 이러한 설정 대부분을 수동으로 구성 할 필요가 없습니다.

환경

기술

pages_external_url

프로토콜 (HTTP / HTTPS)을 포함하여 GitLab 페이지에 액세스 할 수있는 URL입니다. https://를 사용하는 경우 gitlab_pages['ssl_certificate']및 gitlab_pages['ssl_certificate_key']을 설정해야합니다.

gitlab_pages []

 

access_control

액세스 제어 활성화 여부.

api_secret_key

GitLab API로 인증하는 데 사용되는 비밀 키가있는 파일의 전체 경로입니다. 설정하지 않으면 자동 생성됩니다.

artifacts_server

GitLab 페이지에서 아티팩트 보기를 활성화.

artifacts_server_timeout

아티팩트 서버에 프록시 요청의 시간 초과 (초).

artifacts_server_url

이슈 요청을 프록시 할 API URL입니다. 예를 들어, 기본값은 GitLab external URL+ 입니다. /api/v4https://gitlab.com/api/v4

auth_redirect_uri

GitLab 인증을 위한 콜백 URL. 기본적으로 프로젝트의 하위 도메인인 pages_external_url/auth입니다.

auth_secret

인증 요청 서명을위한 비밀 키. OAuth 등록 중에 GitLab에서 자동으로 가져 오려면 비워 둡니다.

dir

구성 및 비밀 파일의 작업 디렉토리.

enable

현재 시스템에서 GitLab Pages를 활성화 또는 비활성화합니다.

external_http

HTTP 요청을 처리하여 하나 이상의 보조 IP 주소에 바인딩하도록 페이지를 구성합니다. 예를 들어 정확한 포트와 함께 여러 주소['1.2.3.4', '1.2.3.5:8063'].를 배열로 제공 할 수 있습니다.listen_http의 값을 설정합니다 

external_https

HTTPS 요청을 처리하여 하나 이상의 보조 IP 주소에 바인딩하도록 페이지를 구성하십시오. 예를 들어 정확한 포트와 함께 여러 주소['1.2.3.4', '1.2.3.5:8063']. 를 배열로 제공 할 수 있습니다 
listen_https의 값을 설정합니다.

gitlab_client_http_timeout

GitLab API HTTP 클라이언트 연결 시간 초과 (초)
(기본값 : 10 초)

gitlab_client_jwt_expiry

JWT 토큰 만기 시간 (초) (기본값 : 30 초).

gitlab_id

OAuth 애플리케이션 공개 ID Pages가 GitLab으로 인증 될 때 자동으로 채워지려면 공백 설정.

gitlab_secret

OAuth 애플리케이션 비밀 Pages가 GitLab으로 인증 될 때 자동으로 채워지려면 공백 설정.

gitlab_server

액세스 제어가 사용 가능한 경우 인증에 사용할 서버. 기본값은 GitLab external_url입니다.

headers

각 응답과 함께 클라이언트로 보내야하는 추가 http 헤더를 지정

http_proxy

페이지와 GitLab 간의 트래픽을 중재하기 위해 HTTP 프록시를 사용하도록 GitLab Pages를 구성합니다. pages 데몬을 시작할 때 환경 변수http_proxy를 설정.

inplace_chroot

chroot 환경에 GitLab 페이지에 지시 할 디렉토리.pages_path

insecure_ciphers

암호 그룹의 기본 목록을 사용 3DES 및 RC4와 같은 안전하지 않은 암호 그룹이 포함될 수 있습니다.

internal_gitlab_server

API 요청에 독점적으로 사용되는 내부 GitLab 서버 주소. 내부로드 밸런서를 통해 해당 트래픽을 보내려는 경우에 유용합니다. 기본값은 GitLab external_url입니다.

listen_proxy

리버스 프록시 요청을 청취 할 주소이며 페이지는 주소의 네트워크 소켓에 바인딩되어 들어오는 요청을 받습니다. 값 설정은 proxy_pass에서 $nginx-dir/conf/gitlab-pages.conf을 설정

log_directory

로그 디렉토리의 절대 경로.

log_format

로그 출력 형식 : 'text'또는 'json'

log_verbose

상세 로깅 true / false로 설정

max_connections

HTTP, HTTPS 또는 프록시 리스너에 대한 동시 연결 수를 제한 설정.

metrics_address

메트릭 요청을 수신 대기 할 주소입니다.

redirect_http

HTTP에서 HTTPS로 페이지를 리디렉션합니다 (true / false)

sentry_dsn

Sentry 충돌보고를 보낼 주소

sentry_enabled

Sentry, true / false로 보고 및 로깅을 활성화

sentry_environment

Sentry 충돌 보고 환경.

status_uri

상태 페이지의 URL 경로입니다 (예 :) /@status.

tls_max_version

최대 SSL / TLS 버전 (“ssl3”,“tls1.0”,“tls1.1”또는“tls1.2”)을 지정합니다.

tls_min_version

최소 SSL / TLS 버전 (“ssl3”,“tls1.0”,“tls1.1”또는“tls1.2”)을 지정합니다.

use_http2

HTTP2 지원 사용 여부 설정

gitlab_rails []

 

pages_domain_verification_cron_worker

사용자 지정 GitLab Pages 도메인 확인 일정.

pages_domain_ssl_renewal_cron_worker

Let 's Encrypt for GitLab Pages 도메인을 통한 SSL 인증서 획득 및 갱신 일정.

pages_domain_removal_cron_worker

확인되지 않은 사용자 지정 GitLab Pages 도메인 제거 일정.

pages_path

페이지가 저장된 디스크의 디렉토리는 기본값이GITLAB-RAILS/shared/pages입니다.

pages_nginx []

 

enable

server{}NGINX 내부의 페이지에 대한 가상 호스트 블록을 포함하십시오 . NGINX가 트래픽을 Pages 데몬으로 다시 프록시하는 데 필요합니다. false예를 들어, 사용자 정의 도메인을 사용할 때 페이지 디먼이 모든 요청을 직접 수신해야하는지로 설정하십시오 .

...

고급 구성

  • 와일드 카드 도메인 외에도 사용자 정의 도메인과 함께 작동하도록 GitLab Pages를 구성하는 옵션이 있습니다. 여기서도 TLS 인증서가 있거나없는 사용자 정의 도메인 지원이라는 두 가지 옵션이 있습니다. 가장 쉬운 설정은 TLS 인증서가없는 것입니다. 두 경우 모두 보조 IP 가 필요합니다 . IPv4 주소뿐만 아니라 IPv6가있는 경우 둘 다 사용할 수 있습니다.

맞춤 도메인

요구 사항 :

...

  1. 편집 /etc/gitlab/gitlab.rb:

    Code Block
    pages_external_url "http://example.io"
    nginx['listen_addresses'] = ['192.0.2.1']
    pages_nginx['enable'] = false
    gitlab_pages['external_http'] = ['192.0.2.2:80', '[2001::2]:80']

2. GitLab을 재구성

TLS를 지원하는 사용자 정의 도메인

요구 사항 :

...

  1. 편집 /etc/gitlab/gitlab.rb:

    Code Block
    pages_external_url "https://example.io"
    nginx['listen_addresses'] = ['192.0.2.1']
    pages_nginx['enable'] = false
    gitlab_pages['cert'] = "/etc/gitlab/ssl/example.io.crt"
    gitlab_pages['cert_key'] = "/etc/gitlab/ssl/example.io.key"
    gitlab_pages['external_http'] = ['192.0.2.2:80', '[2001::2]:80']
    gitlab_pages['external_https'] = ['192.0.2.2:443', '[2001::2]:443']
    

  2. GitLab을 재구성

맞춤 도메인 확인

악의적인 사용자가 자신이 아닌 도메인을 가로 채지 못하게하기 위해 GitLab은 사용자 지정 도메인 확인을 지원합니다. 사용자 정의 도메인을 추가 할 때 사용자는 해당 도메인의 DNS 레코드에 GitLab 제어 인증 코드를 추가하여 자신이 소유하고 있음을 증명해야합니다.

사용자 기반이 개인 정보이거나 신뢰할 수없는 경우 확인 요구 사항을 비활성화할 수 있습니다. Pages 섹션 에서  Admin Area > Settings > Preferences 이동하여 Require users to prove ownership of custom domains 을 취소 하면 됩니다. 이 설정은 기본적으로 활성화되어 있습니다.

Let’s Encrypt integration


GitLab 12.1에 도입 되었습니다.

GitLab Pages의 Let 's Encrypt 통합 기능을 사용하면 사용자 지정 도메인에서 제공되는 GitLab Pages 사이트에 대해 SSL 인증서를 Let 's Encrypt SSL 인증서에 추가 할 수 있습니다.

...

  1. 도메인 만료에 대한 알림을받을 이메일을 선택

  2. 인스턴스의 Admin Area > Settings > Preferences 으로 이동하여 Pages 설정에서 알림을 받을 이메일을 입력하고 아래와 같이 Let 's Encrypt의 서비스 약관에 동의.

  3. Save changes을 클릭.

...

액세스 제어

GitLab 11.5에 도입 되었습니다.

GitLab Pages 액세스 제어는 프로젝트별로 구성 할 수 있으며 해당 프로젝트에 대한 사용자의 멤버십을 기반으로 Pages 사이트에 대한 액세스를 제어 할 수 있습니다.

...

Tip

중요 : 다중 노드 설정의 경우이 설정을 적용하려면 Sidekiq 노드뿐만 아니라 모든 앱 노드에 적용해야합니다.

모든 Pages 웹 사이트에 대한 공개 액세스 비활성화

GitLab 12.7에 도입 되었습니다.

GitLab 인스턴스에서 호스팅되는 모든 GitLab Pages 웹 사이트에 대해 액세스 제어 를 시행 할 수 있습니다. 
이렇게하면 로그인 한 사용자 만 액세스 할 수 있습니다. 이 설정은 개별 프로젝트에서 사용자가 설정 한 액세스 제어를 대체합니다.

...

  1. 인스턴스의 Admin Area > Settings > Preferences으로 이동하여 Pages 설정에서 Disable public access to Pages sites 체크.

  2. Save changes을 클릭.

프록시 뒤에서 실행

다른 GitLab과 마찬가지로 Pages는 외부 인터넷 연결이 프록시에 의해 제어되는 환경에서 사용될 수 있습니다. GitLab 페이지에 프록시를 사용하려면 :

  1.  /etc/gitlab/gitlab.rb 구성 

    Code Block
    gitlab_pages['http_proxy'] = 'http://example:8080'
  2. GitLab을 재구성.

사용자 지정 인증 기관 (CA) 사용

사용자 정의 CA에서 발행 한 인증서를 사용할 때 사용자 정의 CA가 인식되지 않으면 Access Control 및 HTML 작업 아티팩트의 Online View가 작동하지 않습니다.

...

Note

주의 : 일부 Omnibus GitLab 업그레이드는이 대안을 되돌리고 다시 적용해야합니다.

데몬에 대한 자세한 로깅 활성화

자세한 로깅은 Omnibus GitLab 11.1에서 도입 되었습니다.

...

  1. 기본적으로 디먼은 INFO레벨 로만 로그 합니다. 레벨로 이벤트를 로그하게 DEBUG하려면/etc/gitlab/gitlab.rb에 다음을 구성해야합니다.

    Code Block
    gitlab_pages['log_verbose'] = true
    
  2. GitLab을 재구성.

저장 경로 변경

아래 단계에 따라 GitLab Pages의 내용이 저장되는 기본 경로를 변경하십시오.

  1. 페이지는 기본적으로 /var/opt/gitlab/gitlab-rails/shared/pages에 저장되며 다른 위치에 저장하려면 /etc/gitlab/gitlab.rb에 설정해야합니다.

    Code Block
    gitlab_rails['pages_path'] = "/mnt/storage/pages"
    
  2. GitLab을 재구성.

리버스 프록시 요청에 대한 리스너 구성

Omnibus GitLab 11.1에 도입 되었습니다.

...

  1. 기본적으로 리스너는 localhost:8090의 요청을 청취하도록 구성되어 있습니다.

    비활성화하려면 다음을 구성해야합니다 /etc/gitlab/gitlab.rb.

    Code Block
    gitlab_pages['listen_proxy'] = nil
    

    다른 포트에서 수신 대기하려면 다음에서 구성해야합니다 /etc/gitlab/gitlab.rb.

    Code Block
    gitlab_pages['listen_proxy'] = "localhost:10080"
    
  2. GitLab을 재구성.

최대 페이지 크기 설정

Admin Area > Settings > Preferences > Pages의 Maximum size of pages (MB)에서 프로젝트 당 압축 해제 된 아카이브의 최대 크기를 구성 할 수 있습니다. (기본값은 100MB)

별도의 서버에서 GitLab 페이지 실행

주 응용 프로그램 서버의 부하를 줄이기 위해 별도의 서버에서 GitLab Pages 데몬을 실행할 수 있습니다.

...