Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
仅针对推送请求使用基本身份验证保护docker注册表_Docker_Authentication_Nginx_Registry - Fatal编程技术网

仅针对推送请求使用基本身份验证保护docker注册表

仅针对推送请求使用基本身份验证保护docker注册表,docker,authentication,nginx,registry,Docker,Authentication,Nginx,Registry,我正在尝试在nginx代理后面设置一个私有docker注册表,该代理对每个人都是只读的(即允许拉请求),但对推请求需要身份验证。我遵循了各种各样的指南,但仍然感到困惑。以下是我当前的nginx配置: events { worker_connections 1024; } http { upstream docker-registry { server registry:5000; } ## Set a variable to help us decide if we

我正在尝试在nginx代理后面设置一个私有docker注册表,该代理对每个人都是只读的(即允许拉请求),但对推请求需要身份验证。我遵循了各种各样的指南,但仍然感到困惑。以下是我当前的nginx配置:

events {
  worker_connections 1024;
}

http {

  upstream docker-registry {
    server registry:5000;
  }

  ## Set a variable to help us decide if we need to add the
  ## 'Docker-Distribution-Api-Version' header.
  ## The registry always sets this header.
  ## In the case of nginx performing auth, the header is unset
  ## since nginx is auth-ing before proxying.
  map $upstream_http_docker_distribution_api_version $docker_distribution_api_version {
    'registry/2.0' '';
    default registry/2.0;
  }

  server {
    listen 80;
    server_name docker-host.example.com;

    location / {
      rewrite ^(.*)$ https://docker-host.example.com$1 last;
    }
  }

  server {
    listen 443 ssl;
    server_name docker-host.example.com;

    ssl_certificate           /etc/nginx/ssl/example.cert.pem;
    ssl_certificate_key       /etc/nginx/ssl/example.key.pem;
    ssl_ciphers 'AES256+EECDH:AES256+EDH::!EECDH+aRSA+RC4:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS';
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    client_max_body_size 0;

    location / {
      limit_except GET HEAD OPTIONS {
        auth_basic "Restricted";
        auth_basic_user_file /etc/nginx/users.pwd;
      }
      include proxy.conf;
    }
  }
}
它确实允许匿名拉取请求,但推送总是会失败,因为“未经授权:需要身份验证”。如果我删除了除之外的有条件的
限制,\u,即要求对所有访问进行身份验证,那么它在登录后就可以正常工作

当我完全从
nginx
中删除身份验证配置时,一切都可以正常工作,但显然没有身份验证

非常感谢您提供的任何帮助或指导。

我们一直在使用它,它工作得非常好。您可以设置许多身份验证方法

有关更多信息,请查看

我们一直在使用它,它工作得很好。您可以设置许多身份验证方法

有关更多信息,请查看

“未经授权:需要身份验证”错误来自注册表API。这意味着您已经在注册表本身中启用了身份验证。禁用注册表中的身份验证并仅使用nginx基本身份验证,或者代理传递带有相关数据的“授权”标题(技巧)。

注册表API中出现“未授权:需要身份验证”错误。这意味着您已经在注册表本身中启用了身份验证。禁用注册表中的身份验证并仅使用nginx基本身份验证,或者代理传递带有相关数据的“授权”标题(棘手)。

如果需要一些示例,请告诉我。我花了一段时间才弄清楚,因为我想在
traefik
之后运行
注册表
(透明代理),但我确实成功地配置了
docker\u auth
来做我想做的事情。非常感谢你的指点!很高兴听到这个消息,这是一个很好的项目。如果可以,请开始;-)祝您今天过得愉快!如果您需要一些示例,请告诉我。由于我想在
traefik
(透明代理)后面运行
registry
,我花了一段时间才弄清楚,但我确实成功地配置了
docker\u auth
,以完成我想要的操作。非常感谢你的指点!很高兴听到这个消息,这是一个很好的项目。如果可以,请开始;-)祝您今天过得愉快!这是由
注册表
nginx
生成的
未经授权的
错误吗?您是否在
注册表
中禁用了身份验证?我编辑了该问题以澄清
注册表
未设置任何身份验证。当我完全从
nginx
config中删除身份验证配置时,它也可以工作。这似乎表明错误来自
nginx
是由
registry
nginx
生成的
unauthorized
错误?您是否在
注册表
中禁用了身份验证?我编辑了该问题以澄清
注册表
未设置任何身份验证。当我完全从
nginx
config中删除身份验证配置时,它也可以工作。这似乎表明错误来自
nginx
我编辑了原文以澄清可能不是这样。我编辑了原文以澄清可能不是这样。