Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Nginx 在artifactory中配置docker虚拟存储库_Nginx_Docker_Virtual_Artifactory - Fatal编程技术网

Nginx 在artifactory中配置docker虚拟存储库

Nginx 在artifactory中配置docker虚拟存储库,nginx,docker,virtual,artifactory,Nginx,Docker,Virtual,Artifactory,我有一个本地docker存储库和一个远程docker存储库,我创建了一个虚拟docker存储库,将两者结合起来。为了从客户端访问此存储库,是否也需要将其添加到反向代理 以下是当前的反向代理配置 upstream artifactory_lb { server myserver.mycompany.com:8081 backup; server myserver.mycompany.com:8081; } log_format upstreamlog '[$

我有一个本地docker存储库和一个远程docker存储库,我创建了一个虚拟docker存储库,将两者结合起来。为了从客户端访问此存储库,是否也需要将其添加到反向代理

以下是当前的反向代理配置

 upstream artifactory_lb {

        server myserver.mycompany.com:8081 backup;
        server myserver.mycompany.com:8081;
}


log_format upstreamlog '[$time_local] $remote_addr - $remote_user - $server_name  to: $upstream_addr: $request upstream_response_time $upstream_response_time msec $msec request_time $request_time';
ssl_certificate  /etc/nginx/ssl/multidomain_cert_files/mycert.pem;
ssl_certificate_key /etc/nginx/ssl/multidomain_cert_files/mykey.key;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4';
ssl_session_cache shared:SSL:10m;

server {
        listen 80;
        listen 443  ssl;
        client_max_body_size 2048M;
        location / {
                proxy_set_header Host $host;
                proxy_pass http://artifactory_lb;
                proxy_read_timeout 90;
        }
        access_log /var/log/nginx/access.log upstreamlog;
        location /basic_status {
                stub_status on;
                allow all;
                }
}

# Server configuration

server {
    listen 2222 ssl;

    if ($http_x_forwarded_proto = '') {
        set $http_x_forwarded_proto  $scheme;
    }

    rewrite ^/(v1|v2)/(.*) /api/docker/myrepo_images/$1/$2;
    client_max_body_size 0;
    chunked_transfer_encoding on;

    location / {
    allow all;s
    proxy_read_timeout  900;
    proxy_pass_header   Server;
    proxy_cookie_path ~*^/.* /;
    proxy_set_header   X-Artifactory-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;
    proxy_pass http://artifactory_lb/artifactory/;

    }
}

。Docker注册表仅由其主机名引用。这意味着在反向代理中需要两个主机名不同的虚拟主机(使用),映射到不同的工件存储库

下面的示例配置(缩写)应该可以做到这一点:

server {
    listen 2222 ssl;
    server_name local-repo.my-artifactory.com;

    rewrite ^/(v1|v2)/(.*) /api/docker/myrepo_images/$1/$2;

    # <insert remaining configuration directives here>
}

server {
    listen 2222 ssl;
    server_name virtual-repo.my-artifactory.com;

    rewrite ^/(v1|v2)/(.*) /api/docker/myrepo_virtual/$1/$2;

    # <insert remaining configuration directives here>
}

感谢helmbert,为了减轻客户端的更改,这两个存储库是否可以配置为使用相同的服务器名称但在不同的端口上?@user\u mda,当然;只需将虚拟主机中的
listen
指令调整到您喜欢的任何端口即可。@user\u mda您应该学会接受正确的答案,就像这样。你们只接受了你们所有问题的一个答案。
$ docker pull virtual-repo.my-artifactory.com:2222/foo/bar:latest
$ docker pull local-repo.my-artifactory.com:2222/foo/bar:latest
$ docker push local-repo.my-artifactory.com:2222/foo/bar:latest