Http nginx没有这样的文件或目录

Http nginx没有这样的文件或目录,http,nginx,docker,artifactory,Http,Nginx,Docker,Artifactory,我在nginx中有以下配置 upstream artifactory_lb { server artifactoryserver.com:8081; server otherartifactoryserver.com:8081 backup; } 其他配置 rewrite ^/(v1|v2)/(.*) /api/docker/image-repo/$1/$2; client_max_body_size 0; chunked_transfer_encoding on; loca

我在nginx中有以下配置

upstream artifactory_lb {
    server artifactoryserver.com:8081;
    server otherartifactoryserver.com:8081 backup;
}
其他配置

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

location /v1 {
    allow all;
    proxy_read_timeout  900;
    proxy_pass_header   Server;
    proxy_cookie_path   ~*^/.* /;
    proxy_set_header    X-Artifactory-Override-Base-Url $http_x_forwarded_proto://$host;
    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; 
}
当我尝试推送一个映像时,docker客户端上会出现405-不允许的错误,而nginx日志显示以下错误

/usr/share/nginx/html/api/docker/image-repo/v1/_ping" failed (2: No such file or directory)
如何配置nginx以便ping正确的回购位置?这是因为上游服务器不包含repo吗

更新: 在进行以下更改之后

location /v1 --> location /
proxy_pass http://artifactoryserver.com:8081/artifactory/
这个错误消失了,但我在docker客户端上得到了以下错误

Sending image list
Error: Status 403 trying to push repository ubuntu: "{\"error\": \"Unauthorized updating repository images\"}"
docker守护程序日志显示

POST /v1.21/images/host:port/ubuntu/push?tag=

这是否意味着它正在点击repo并需要权限来推送图像,还是意味着repo不存在???

未经授权的错误是由于客户端的docker版本不支持artifactory配置为的v1 api,而您的
重写
会阻止请求到达最远的距离
/v1
位置。您的客户端呈现的URI到底是什么?您希望它映射到哪个上游URL?@user\u mda我建议您更新以前的问题,而不是创建与同一问题相关的新问题。这使得很难提供帮助,并且留下了大量未回答的问题。@drorb谢谢我回答了这些问题。@RichardSmith:我不确定在创建存储库时创建了什么artifactory uri。重写不应该用/api/docker/image repo//v1替换v1之后的所有内容吗?我在删除/v1之后更新了这个问题