Page tree

이 문서는 Artifactory 서비스에서 HTTP 설정과 역방향 프록시 설정 등에 대한 가이드를 공유하기 위해 작성되었다.


도구명JFrog Artifactory
문서 작성 기준 버전7.84.14
지원 Edition

COMMUNITY PRO PRO X ENTERPRISE X ENTERPRISE +

목차



HTTP 설정의 개요

많은 경우, 조직은 NGINX 또는 Apache 와 같은 역방향 프록시를 통해 Artifactory에 대한 액세스를 제공할 수 있습니다.

  • 관리자 메뉴 → Artifactory → General - HTTP Settings

warning 보안을 위해 역방향 프록시 뒤에서 Artifactory를 사용하는 경우,
역방향 프록시는 웹 서버와 동일한 머신에 공동 배치해야 하며 Artifactory는 명시적이고 배타적으로 프록시 호스트에 바인딩되어야 합니다.

Docker (도커) 역방향 프록시 (Reverse Proxy) 설정

Artifactory를 자체 호스팅 개인 Docker 레지스트리로 사용할 때 Docker 클라이언트는 역방향 프록시를 통해 또는 Artifactory의 내장 Tomcat을 통해 직접 Artifactory에 액세스할 수 있습니다.

JFrog Artifactory Cloud 설치에서 Artifactory Docker 레지스트리에 액세스하는 경우 조직 외부에 있으므로 역방향 프록시를 사용하지 않습니다.

역방향 프록시 없이 직접 액세스 사용

Docker Access Method를 Repository Path로 설정해야 합니다.

Repository Path 방법 : Artifactory Docker 저장소에 액세스할 때 저장소 경로 (예: <REPOSITORY_KEY>/<IMAGE>) 가 사용됩니다.
Port 및 Sub Domain 방법과 비교할 때 이 방법을 사용하면 역방향 프록시 뒤에 Artifactory를 구성할 필요가 없습니다.

Docker 클라이언트와 함께 역방향 프록시 사용

Docker 클라이언트는 Sub Domain (권장) 또는 Port 방법을 사용하여 역방향 프록시를 통해 Artifactory에 액세스할 수 있습니다.

Sub Domain 방법

Docker 저장소를 구성할 때 역방향 프록시 방법으로 Sub Domain을 선택하면 Docker 저장소의 Advanced 탭의 Registry Name이 자동으로 필요한 값으로 설정되며, Sub Domain으로 저장소 키가 사용됩니다.

Port 방법

방법을 Port로 선택하는 경우, Docker 저장소를 구성할 때 Docker 저장소 구성 고급 탭에서 레지스트리 포트를 설정해야 합니다.

이 포트는 Docker 클라이언트가 저장소에서 이미지를 가져오고 저장소에 이미지를 푸시하는 데 사용할 포트입니다.
모든 Docker 저장소를 역방향 프록시 구성에 포함하려면 먼저 시스템에 정의된 각 Docker 저장소에 대한 포트를 설정한 다음 역방향 프록시 구성을 생성해야 합니다.

가상 도커 저장소 (Virtual Docker Repository)를 만들고 이를 사용하여 이미지를 끌어오고 푸시하면 해당 가상 저장소에 대한 NGINX 구성만 설정하면 되기 때문에 이를 권장합니다.

NGINX를 역방향 프록시로 사용하기

HTTP 또는 HTTPS를 사용하여 NGINX 서버 설정

사용자 인터페이스에 링크가 올바르게 나타나도록 하려면 Artifactory 자체에서 기본 URL을 설정해야 합니다.

config에 https가 설정된 경우 ssl 항목을 추가
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_certificate      /etc/nginx/ssl/yourdomain.com.crt;
ssl_certificate_key  /etc/nginx/ssl/yourdomain.com.key;
ssl_session_cache shared:SSL:1m;
ssl_prefer_server_ciphers   on;
서버 설정
## system.yaml 파일에 플랫폼 설정을 세팅

server {
    listen 443 ssl;
    listen 80 ;
     
    server_name yourdomain.com;

    if ($http_x_forwarded_proto = '') {
        set $http_x_forwarded_proto  $scheme;
    }
    ## Application specific logs
    ## access_log /var/log/nginx/yourdomain.com-access.log timing;
    ## error_log /var/log/nginx/yourdomain.com-error.log;
    rewrite ^/$ /ui/ redirect;
    rewrite ^/ui$ /ui/ redirect;
    chunked_transfer_encoding on;
    client_max_body_size 0;
    location / {
        proxy_read_timeout  2400s;
        proxy_pass_header   Server;
        proxy_cookie_path   ~*^/.* /;
        proxy_pass          http://<artifactory-ip>:8082;
        proxy_next_upstream error timeout non_idempotent;
        proxy_next_upstream_tries    1;
        proxy_set_header    X-JFrog-Override-Base-Url $http_x_forwarded_proto://$host:$server_port;
        proxy_set_header    X-Forwarded-Port  $server_port;
        proxy_set_header    X-Forwarded-Proto $http_x_forwarded_proto;
        proxy_set_header    Host              $http_host;
        proxy_set_header    X-Forwarded-For   $proxy_add_x_forwarded_for;

        location ~ ^/artifactory/ {
            proxy_pass    http://<artifactory-ip>:8081;
        }
    }
}

바이너리 캐싱은 Nginx 역방향 프록시에서 활성화할 수 있지만, 현재 Artifactory에서는 지원하지 않습니다.
클라이언트와 Artifactory 사이에 캐시 계층을 설정할 경우 오래된 메타데이터 및 업로드 문제와 같은 알려진 안정성 문제가 있습니다.
아티팩트를 캐시하려면 Smart Remote Repository를 설정하는 것을 추천합니다.


  1. 서버 공급자 유형 : Nginx 선택
  2. 업스트림 이름
  3. 내부 호스트 이름 : 웹서버가 Artifactory 머신에 접근하는 데 사용하는 Artifactory 내부 서버 이름
    내부 아티팩토리 포트 : Artifactory System YAML 파일에서 구성할 수 있고, REST API 및 다운로드를 위한 Artifactory에 직접 액세스
    내부 라우터 포트 : JFrog 플랫폼 서비스 REST API 및 웹 UI에 대한 액세스. Artifactory System YAML 파일에서 구성
  4. 공개 서버 이름 : 조직 내에서 Artifactory에 접근하는 데 사용되는 공개 서버 이름
  5. HTTP 또는 HTTPS 선택

Apache로 역방향 프록시 구성하기

필요한 모듈 확인

  • proxy_http

  • rewrite

  • deflate

  • headers

  • proxy_balancer

  • proxy_connect

  • proxy_html

  • ssl

  • lbmethod_byrequests

  • slotmem_shm

  • proxy

HTTP를 사용하여 Apache 서버 설정

HTTP 프로토콜을 사용하여 Artifactory의 프론트 엔드로 Apache HTTP 서버를 설정할 수 있습니다.

Tomcat과 함께 Artifactory를 실행하는 경우 HTTP를 통해 Artifactory를 프록시하도록 Apache를 설정하는 것이 좋습니다.
Artifactory 자체에 기본 URL을 설정하여 UI 링크가 올바르게 표시되도록 해야 합니다. 

Apache에 PassReverse 지시문 설정
<VirtualHost *:80>
    ServerName yourdomain.com
    ServerAlias *.yourdomain.com
    ServerAdmin server@admin

    ## Application specific logs
    ## ErrorLog ${APACHE_LOG_DIR}/yourdomain.com-error.log
    ## CustomLog ${APACHE_LOG_DIR}/yourdomain.com-access.log combined

    AllowEncodedSlashes On
    RewriteEngine on

    RewriteCond %{SERVER_PORT} (.*)
    RewriteRule (.*) - [E=my_server_port:%1]
    ##  NOTE: The 'REQUEST_SCHEME' Header is supported only from apache version 2.4 and above
    RewriteCond %{REQUEST_SCHEME} (.*)
    RewriteRule (.*) - [E=my_scheme:%1]
    RewriteCond %{HTTP_HOST} (.*)
    RewriteRule (.*) - [E=my_custom_host:%1]
    RewriteRule ^(/)?$      /ui/ [R,L]

    RequestHeader set Host %{my_custom_host}e
    RequestHeader set X-Forwarded-Port %{my_server_port}e
    ## NOTE: {my_scheme} requires a module which is supported only from apache version 2.4 and above
    RequestHeader set X-Forwarded-Proto %{my_scheme}e
    RequestHeader set X-JFrog-Override-Base-Url %{my_scheme}e://yourdomain.com:%{my_server_port}e

    ProxyPassReverseCookiePath / /
    ProxyRequests off
    ProxyPreserveHost on
    ProxyPass "/artifactory/" http://<artifactory-ip>:8081/artifactory/ connectiontimeout=5 timeout=2400
    ProxyPassReverse "/artifactory/" http://<artifactory-ip>:8081/artifactory/
    ProxyPass "/" http://<artifactory-ip>:8082/ nocanon connectiontimeout=5 timeout=2400 
    ProxyPassReverse "/" http://<artifactory-ip>:8082/
</VirtualHost>

HTTPS를 사용하여 Apache 서버 설정

HTTP 프로토콜을 사용하여 Artifactory의 프런트 엔드로 SSL(HTTPS)을 갖춘 Apache를 설정할 수 있습니다.

Apache에 SSL/TLS 설정
<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile path/to/yourdomain.com.crt
    SSLCertificateKeyFile path/to/yourdomain.com.key
    SSLProxyEngine on

    ## Additional reverse proxy directives
</VirtualHost>

  1. 서버 공급자 유형 : Apache 선택
  2. 업스트림 이름
  3. 내부 호스트 이름 : 웹서버가 Artifactory 머신에 접근하는 데 사용하는 Artifactory 내부 서버 이름
    내부 아티팩토리 포트 : Artifactory System YAML 파일에서 구성할 수 있고, REST API 및 다운로드를 위한 Artifactory에 직접 액세스
    내부 라우터 포트 : JFrog 플랫폼 서비스 REST API 및 웹 UI에 대한 액세스. Artifactory System YAML 파일에서 구성
  4. 공개 서버 이름 : 조직 내에서 Artifactory에 접근하는 데 사용되는 공개 서버 이름
  5. HTTP 또는 HTTPS 선택



참조


  • No labels