You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I was having trouble pushing large image layers (over 20GB in size) to the docker registry via the docker-registry-ui. It would always fail (logs were showing received unexpected HTTP status: 500 Internal Server Error) and restart the layer transfers from scratch, whereas a direct connection and push to the docker registry works as expected.
After extensive search it turns out it is the proxy buffering that nginx does per default.
It actually makes the tranfer take more time, because it is initially buffered completely locally in the nginx instance, before being sent to the docker registry, meaning twice the delay.
As a matter of fact I always had problems with buffering and would disable it on all nginx instances, but I missed the fact that docker-registry-ui internally also uses one (duh!).
Setting proxy_request_buffering off; in the nginx config solves the problem.
I would suggest adding this in the default nginx configuration, and maybe also proxy_read_timeout with a higher than default setting (I use 3600s) to mitigate timeout problems when the docker pull command takes a long time due to slow transfer speed.
The text was updated successfully, but these errors were encountered:
Hi there, thank you for providing and maintaining this project.
Do note that the link you mentioned talks about proxy_buffering, which is not the same as proxy_request_buffering.
I'll also change the title of the issue to reflect that.
Greek64
changed the title
Disable proxy buffering
Disable proxy request buffering
Jan 20, 2023
Yes you're right ! And proxy_buffering is already set to off in the nginx configuration !
Anyway, I pushed the new configuration, it will be available in the main/master tag now and in the next release 2.4.0 but I still have some work to do for a release 😄
I was having trouble pushing large image layers (over 20GB in size) to the docker registry via the
docker-registry-ui
. It would always fail (logs were showingreceived unexpected HTTP status: 500 Internal Server Error
) and restart the layer transfers from scratch, whereas a direct connection and push to the docker registry works as expected.After extensive search it turns out it is the proxy buffering that nginx does per default.
It actually makes the tranfer take more time, because it is initially buffered completely locally in the nginx instance, before being sent to the docker registry, meaning twice the delay.
As a matter of fact I always had problems with buffering and would disable it on all nginx instances, but I missed the fact that
docker-registry-ui
internally also uses one (duh!).Setting
proxy_request_buffering off;
in the nginx config solves the problem.I would suggest adding this in the default nginx configuration, and maybe also
proxy_read_timeout
with a higher than default setting (I use 3600s) to mitigate timeout problems when the docker pull command takes a long time due to slow transfer speed.The text was updated successfully, but these errors were encountered: