Артефакт 7.х за выпуском nginx - PullRequest
0 голосов
/ 19 марта 2020

У меня есть бесплатная sh установка Artifactory 7.2.1 (на docker основе), которая работает нормально, но я хочу получить к ней доступ через прокси nginx, и это не работает. моя артефакт работает под http://192.168.211.207: 8082 / Пользовательский базовый URL установлен на: http://192.168.211.207: 8081 / артефакт ->, который перенаправляет меня на http://192.168.211.207 : 8082 /

Теперь у меня есть сервер nginx, который работает на том же сервере, также через docker.

Когда я пытаюсь получить доступ:

http://192.168.211.207 -> перенаправляет меня на https://192.168.211.207/artifactory + 502 Bad Gateway

https://192.168.211.207 -> перенаправляет меня на https://192.168.211.207/ui + 502 Bad Gateway

http://192.168.211.207/artifactory -> перенаправляет на https + 502 Bad Gateway

https://192.168.211.207/artifactory -> 502 Bad Gateway

Я не совсем понимаю, что скрывается за портом 8081, поскольку я не могу использовать его ни при каких обстоятельствах. Порт 8082 работает, но не за прокси nginx.

Вот мой docker -компонентный файл:

version: '2'
    services:
      artifactory:
        image: docker.bintray.io/jfrog/artifactory-pro:7.2.1
        container_name: artifactory
        ports:
         - 8081:8081
         - 8082:8082
        volumes:
         - /data/artifactory:/var/opt/jfrog/artifactory
        restart: always
        ulimits:
          nproc: 65535
          nofile:
            soft: 32000
            hard: 40000
      nginx:
        image: docker.bintray.io/jfrog/nginx-artifactory-pro:7.2.1
        container_name: nginx
        ports:
         - 80:80
         - 443:443
        depends_on:
         - artifactory
        links:
         - artifactory
        volumes:
         - /data/nginx:/var/opt/jfrog/nginx
        environment:
         - ART_BASE_URL=http://localhost:8081/artifactory
         - SSL=true
         # Set SKIP_AUTO_UPDATE_CONFIG=true to disable auto loading of NGINX conf
         #- SKIP_AUTO_UPDATE_CONFIG=true
        restart: always
        ulimits:
          nproc: 65535
          nofile:
            soft: 32000
            hard: 40000

, а вот мой nginx файл конфигурации:

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_certificate  /var/opt/jfrog/nginx/ssl/example.crt;
ssl_certificate_key  /var/opt/jfrog/nginx/ssl/example.key;
ssl_session_cache shared:SSL:1m;
ssl_prefer_server_ciphers   on;
## server configuration
server {
  listen 443 ssl;
  listen 80 ;
  server_name ~(?<repo>.+)\.artifactory artifactory;

  if ($http_x_forwarded_proto = '') {
    set $http_x_forwarded_proto  $scheme;
  }
  ## Application specific logs
  ## access_log /var/log/nginx/artifactory-access.log timing;
  ## error_log /var/log/nginx/artifactory-error.log;
  if ( $repo != "" ){
    rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/$repo/$1/$2;
  }
 rewrite ^/$ /ui/ redirect;
    rewrite ^/ui$ /ui/ redirect;
    proxy_buffer_size          128k;
    proxy_buffers              4 256k;
    proxy_busy_buffers_size    256k;
    chunked_transfer_encoding on;
    client_max_body_size 0;
    location / {
    proxy_read_timeout  2400s;
    proxy_pass_header   Server;
    proxy_cookie_path   ~*^/.* /;
    proxy_pass          http://localhost:8082;
    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://localhost:8082;
        }
    }
}

Я не могу понять, что я делаю здесь неправильно, но возможно что-то упустить, так как я не nginx эксперт.

Кто-то замечает проблему? У кого-нибудь есть пример файла конфигурации для nginx и артефакта 7.x?

1 Ответ

0 голосов
/ 09 апреля 2020

Вероятно, проблема здесь. Поскольку вы запускаете его в docker контейнере nginx, в контейнере это неправильно обрабатывается -> proxy_pass http://localhost: 8082 ; Вместо этого используйте IP. У меня это сработало

...