이 문서는 Artifactory 서비스에서 HTTP 설정과 역방향 프록시 설정 등에 대한 가이드를 공유하기 위해 작성되었다.
도구명 | JFrog Artifactory |
---|---|
문서 작성 기준 버전 | 7.84.14 |
지원 Edition | COMMUNITY PRO PRO X ENTERPRISE X ENTERPRISE + |
목차
HTTP 설정의 개요
많은 경우, 조직은 NGINX 또는 Apache 와 같은 역방향 프록시를 통해 Artifactory에 대한 액세스를 제공할 수 있습니다.
- 관리자 메뉴 → Artifactory → General - HTTP Settings
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을 설정해야 합니다.
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를 설정하는 것을 추천합니다.
- 서버 공급자 유형 : Nginx 선택
- 업스트림 이름
- 내부 호스트 이름 : 웹서버가 Artifactory 머신에 접근하는 데 사용하는 Artifactory 내부 서버 이름
내부 아티팩토리 포트 : Artifactory System YAML 파일에서 구성할 수 있고, REST API 및 다운로드를 위한 Artifactory에 직접 액세스
내부 라우터 포트 : JFrog 플랫폼 서비스 REST API 및 웹 UI에 대한 액세스. Artifactory System YAML 파일에서 구성 - 공개 서버 이름 : 조직 내에서 Artifactory에 접근하는 데 사용되는 공개 서버 이름
- 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 링크가 올바르게 표시되도록 해야 합니다.
<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를 설정할 수 있습니다.
<VirtualHost *:443> SSLEngine on SSLCertificateFile path/to/yourdomain.com.crt SSLCertificateKeyFile path/to/yourdomain.com.key SSLProxyEngine on ## Additional reverse proxy directives </VirtualHost>
- 서버 공급자 유형 : Apache 선택
- 업스트림 이름
- 내부 호스트 이름 : 웹서버가 Artifactory 머신에 접근하는 데 사용하는 Artifactory 내부 서버 이름
내부 아티팩토리 포트 : Artifactory System YAML 파일에서 구성할 수 있고, REST API 및 다운로드를 위한 Artifactory에 직접 액세스
내부 라우터 포트 : JFrog 플랫폼 서비스 REST API 및 웹 UI에 대한 액세스. Artifactory System YAML 파일에서 구성 - 공개 서버 이름 : 조직 내에서 Artifactory에 접근하는 데 사용되는 공개 서버 이름
- HTTP 또는 HTTPS 선택
참조
- https://jfrog.com/help/r/jfrog-artifactory-documentation/reverse-proxy-settings
- https://jfrog.com/help/r/jfrog-artifactory-documentation/configure-nginx
- https://jfrog.com/help/r/jfrog-artifactory-documentation/configure-apache