首页 > 解决方案 > docker 注册表和 nginx - 实体太大 - client_max_body_size 没有效果

问题描述

我已经docker registry为图像存储部署了S3作为存储。

我的一些图像在GBs. 所以我将 nginx 属性设置client_max_body_size5GB. 但它仍然给我这个错误。

error parsing HTTP 413 response body: invalid character '<' looking for beginning of value: "<html>\r\n<head><title>413 Request Entity Too Large</title></head>\r\n<body bgcolor=\"white\">\r\n<center>

413请求实体太大

登记处

upstream registry_upstream{
    server 127.0.0.1:5000;
}

server {
  server_name  registry.domain.com;
  # disable any limits to avoid HTTP 413 for large image uploads
  client_max_body_size 0;
  location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        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_cache_bypass $http_upgrade;
        proxy_pass http://registry_upstream;

   }

 # managed by Certbot

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/registry.domain.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/registry.domain.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


}
server {
    if ($host = registry.domain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


  server_name  registry.domain.com;
    listen 80;
    client_max_body_size 0;
    return 404; # managed by Certbot


}

标签: dockernginxdocker-registry

解决方案


我已将client_max_body_size属性http移至nginx.conf.

http {
    client_max_body_size 0;

    # configuration of the server
    server {
        .....
   }
} 

推荐阅读