Spent some time today trying to make NuGet.Server work so that I can host my own packages. I’m working on a new .NET core project on my Mac and wanted to host the server in IIS which is accessible from various machines.
I’ve got a public facing web server running nginx which is connected to a windows server behind it (actually via VPN). I use nginx proxy_pass feature to pass the request on backwards to the IIS server.
I was trying to push a package to the server and got this error:
PUT http://nuget.XXXXXXX/api/v2/package/
An error was encountered when fetching ‘PUT http://nuget.XXXXXXX/api/v2/package/’. The request will now be retried.
Request Entity Too Large
In other cases I just got this:
PUT http://nuget.XXXXXX
An error was encountered when fetching ‘PUT http://nuget.XXXXXX/’. The request will now be retried.
Cannot access a disposed object.
Object name: ‘System.Net.Sockets.NetworkStream’.
(I don’t really know why I seemed to get 2 different errors – I didn’t do much digging).
The cause of this issue was that nginx was limiting the max body size request to 1M and it seems to inspect Content-Length header before receiving the full request. If it exceeds 1M, it returns a 413 error. See client_max_body_size for more info.
The fix is simple. In my case, on my Linux server I opened /etc/nginx/nginx.conf and appended this line:
client_max_body_size 10M;
This needed to be append inside the http {} block.
Restart nginx and push again.
Hope this helps someone.