Nginx 将 location /docker-registry proxy_pass 到 docker registry 出现“error parsing HTTP 404 response body”

2021-04-27 22:02:51 +08:00
 JasonLaw

我使用 Nginx 将 /docker-registry proxy_pass 到 http://localhost:5000/,以下是配置:

http {
   server {
      server_name ...;
      listen 443 ssl;

      ssl_certificate ...;
      ssl_certificate_key ...;

      location /docker-registry {
         proxy_pass http://localhost:5000/;
      }
   }
}

events { }

但是执行docker push {domain}/docker-registry/hello-world时报错了,我应该怎么解决呢?

报错信息如下:

error parsing HTTP 404 response body: invalid character '<' looking for beginning of value: "<html>\r\n<head><title>404 Not Found</title></head>\r\n<body>\r\n<center><h1>404 Not Found</h1></center>\r\n<hr><center>nginx/1.18.0 (Ubuntu)</center>\r\n</body>\r\n</html>\r\n"

如果我将 location /docker-registry 改为 location /,然后执行 docker push {domain}/hello-world,是可以成功的。

1806 次点击
所在节点    NGINX
4 条回复
hljjhb
2021-04-27 22:52:07 +08:00
Docker 不支持,据我所知也没有 workaround
oott123
2021-04-28 01:08:07 +08:00
docker registry 不是这么工作的…它用到了很复杂的 api 。一楼说得对,基本上没有办法。
ihipop
2021-04-28 08:04:29 +08:00
@hljjhb 方法
1.用子域名
2.记得 docker client 有特殊的 useragent 的,可以试试通过 UA 决定是 proxy pass 到后端 registery 还是正常服务网站
no1xsyzy
2021-04-28 10:43:52 +08:00
@ihipop 这是 solution
但也不能添加(而是使你不需要) path 前缀

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/773705

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX