【问题标题】:Serve docker repository on non-root path (nginx + Sonatype Nexus)在非根路径上提供 docker 存储库(nginx + Sonatype Nexus)
【发布时间】:2020-01-23 07:27:26
【问题描述】:

我们有几个 Docker 存储库,由 Sonatype Nexus 服务器提供服务。

问题是我们希望从路径中为它们提供服务,而不是在不同的域上提供它们。原因很简单:配置新路径比配置新域更容易,每个子域注册和 SSL 证书。此外,还有一些安全问题。

可以吗?

【问题讨论】:

    标签: docker nginx docker-compose docker-registry nexus3


    【解决方案1】:

    看了一会,发现有两个步骤:登录和正常使用。

    由于安装有 nginx 和 docker-compose 中的 nexus 服务器,我可以将 nexus 主机称为“nexus”,并仅通过 http 访问。 SSL证书在nginx中使用the usual nginx configuration解析

    为了使登录正常工作,将路径 /v2/ 重定向到 docker 存储库非常重要。这可以通过 nginx 完成:

    location /v2/ {
       proxy_set_header    Host $host;
       proxy_set_header    X-Real-IP $remote_addr;
       proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header    X-Forwarded-Proto $scheme;
       proxy_pass          http://nexus:10000;
       proxy_read_timeout  90;
    }
    

    请注意,它假定 docker 存储库的 nexus 配置在内部侦听 10000 端口 (http)。 使用此配置,docker login 应该已经可以工作了,但您无法拉取任何图像。

    为了访问图像,重写 URI 很重要(请将此配置放在前面显示的 /v2/ 配置上):

    location ~ /v2/repository/docker-repo1/(.*) {
      proxy_set_header    Host $host;
      proxy_set_header    X-Real-IP $remote_addr;
      proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header    X-Forwarded-Proto $scheme;
      proxy_pass          http://nexus:10000/v2/$1;
      proxy_read_timeout  90;
    }
    

    而且很容易实现,您可以创建第二个存储库,监听 10001 端口,配置如下:

    location ~ /v2/repository/docker-repo2/(.*) {
      proxy_set_header    Host $host;
      proxy_set_header    X-Real-IP $remote_addr;
      proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header    X-Forwarded-Proto $scheme;
      proxy_pass          http://nexus:10001/v2/$1;
      proxy_read_timeout  90;
    }
    

    它已经完成了。

    请记住,在所有其他配置之后维护/v2/ 配置(用于登录的配置)非常重要,否则将永远无法访问。

    我不确定有关授权的所有要求是否会按预期工作...如果我发现任何问题,我会更新此答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-24
      • 2016-07-08
      • 2016-08-18
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多