我们的架构是nginx反向代理到harbor后端,所以这里的192.168.xx.20:443是nginx的端口。
docker 推送镜像报错:
[root@dev-node01 ~]# docker push 192.168.xx.20:443/ruoyi-dev/ruoyi-nginx:dev-127
The push refers to repository [192.168.xx.20:443/ruoyi-dev/ruoyi-nginx]
dd344f6eb418: Pushing [==================================================>] 7.344MB/7.344MB
400481800ebf: Layer already exists
32ed8af87d6c: Layer already exists
d874fd2bc83b: Layer already exists
32ce5f6a5106: Layer already exists
f1db227348d0: Layer already exists
b8d6e692a25e: Layer already exists
e379e8aedd4d: Waiting
2edcec3590a4: Waiting
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>\r\n<center><h1>413 Request Entity Too Large</h1></center>\r\n<hr><center>nginx/1.24.0</center>\r\n</body>\r\n</html>\r\n"
[root@dev-node01 ~]# docker images | grep '192.168.xx.20:443/ruoyi-dev/ruoyi-nginx'
192.168.xx.20:443/ruoyi-dev/ruoyi-nginx dev-127 13a89449a269 4 minutes ago 149MB
[root@dev-node01 ~]#
从报错信息来看这是nginx返回的错误信息,原因是nginx设置允许客户端的包大小设置小了,nginx反向代理到了后端harbor。
如下设置:
[root@dev-master ~]# cat /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
client_max_body_size 0; # 0表示不限制客户端包的大小
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
[root@dev-master ~]# nginx -s reload # 重载nginx
可以将client_max_body_size
设置为一个非常大的值,如0或者100G等,以达到不限制的效果。
在Nginx中,client_max_body_size
参数用于限制客户端请求主体的最大尺寸。如果您希望去除这个限制,可以将其值设置得非常大,例如设置为0,这样Nginx就不会对客户端的请求主体大小进行限制了。但请注意,这样做可能会增加服务器的资源消耗,因为它需要处理更大的请求主体。此外,如果请求主体大于client_body_buffer_size指定的值,Nginx会将请求主体保存到临时文件中,因此确保临时文件目录具有足够的空间和适当的权限也是很重要的。
在实际操作中,您可以通过编辑Nginx配置文件来实现这一点。例如,您可以在http、server或location块中添加或修改以下配置:
client_max_body_size 0;
client_max_body_size 100G;
这样的配置将会允许客户端发送非常大的请求主体,直到达到操作系统或硬件的限制。在做出这样的更改之前,请确保考虑到了潜在的安全风险和服务器性能影响。