ERR_CONTENT_LENGTH_MISMATCH on nginx and proxy on Chrome when loading large files

Google ChromeNginxProxy

Google Chrome Problem Overview


I'm getting the following error on my chrome console:

GET http://localhost/grunt/vendor/angular/angular.js net::ERR_CONTENT_LENGTH_MISMATCH 

This only happens when a simultaneous requests are shot towards nginx e.g. when the browsers cache is empty and the whole app loads. Loading the resource above as a single requests succeeds.

Here are the headers to this requests, copied from Chrome:

Remote Address:127.0.0.1:80
Request URL:http://localhost/grunt/vendor/angular/angular.js
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,de;q=0.6,pl;q=0.4,es;q=0.2,he;q=0.2,gl;q=0.2
Cache-Control:no-cache
Connection:keep-alive
Cookie:gs_u_GSN-265185-D=1783247335:2567:5000:1377697930719
Host:localhost
Pragma:no-cache
Referer:http://localhost/grunt/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.122 Safari/537.36
Response Headersview source
Accept-Ranges:bytes
Cache-Control:public, max-age=0
Connection:keep-alive
Content-Length:873444
Content-Type:application/javascript
Date:Tue, 23 Sep 2014 11:08:19 GMT
ETag:"873444-1411465226000"
Last-Modified:Tue, 23 Sep 2014 09:40:26 GMT
Server:nginx/1.6.0

the real size of the file:

$ ll vendor/angular/angular.js
-rw-rw-r--  1 xxxx  staff  873444 Aug 30 07:21 vendor/angular/angular.js

As you can see Content-Length and the real size of the file are the same, so that's weird

And the nginx configuration to this proxy:

location /grunt/ {
    proxy_pass  http://localhost:9000/;
}

Any ideas?

Thanks

EDIT: found more info on the error log:

2014/09/23 13:08:19 [crit] 15435#0: *8 open() "/usr/local/var/run/nginx/proxy_temp/1/00/0000000001" failed (13: Permission denied) while reading upstream, client: 127.0.0.1, server: localhost, request: "GET /grunt/vendor/angular/angular.js HTTP/1.1", upstream: "http://127.0.0.1:9000/vendor/angular/angular.js", host: "localhost", referrer: "http://localhost/grunt/"

Google Chrome Solutions


Solution 1 - Google Chrome

Adding the following line to the nginx config was the only thing that fixed the net::ERR_CONTENT_LENGTH_MISMATCH error for me:

proxy_buffering off;

Solution 2 - Google Chrome

It seems that under pressure, nginx tried to pull angular.js from its cache and couldn't due to permission issues. Here's what solved this issue:

root@amac-2:/usr/local/var/run/nginx $ chown -R _www:admin proxy_temp

_www:admin might be different in your case, depending which user owns the nginx process. See more information on ServerFault:

https://serverfault.com/questions/534497/why-do-nginx-process-run-with-user-nobody

Solution 3 - Google Chrome

I tried all of the above and still couldn't get it to work. Even after resorting to chmod 777. The only thing that solved it for me was to disable caching entirely:

proxy_max_temp_file_size 0;

Whilst not a fix and no good for production use this was OK for me since I'm only using nginx as part of a local development setup.

Solution 4 - Google Chrome

For me the remedy were these two settings:

In the file: /etc/nginx/nginx.conf

Add:

proxy_max_temp_file_size 0;
proxy_buffering off;

Between the lines client_max_body_size 128M; and server_names_hash_bucket_size 256;:

http {

client_max_body_size 128M;
proxy_max_temp_file_size 0;
proxy_buffering off;
server_names_hash_bucket_size 256;

Solution 5 - Google Chrome

ps aux | grep "nginx: worker process"

after executing above command you'll see the user through which nginx is running

eg.

www-data 25356  0.0  0.0  68576  4800 ?        S    12:45   0:00 nginx: worker process

www-data 25357  0.0  0.0  68912  5060 ?        S    12:45   0:00 nginx: worker process

now you have to run below command to give permission

chown -R www-data:www-data /var/lib/nginx/

Hope it will work

Solution 6 - Google Chrome

For us, it turned out to be that our server's rather small root (ie. /) was full.

It had mountains of logs and files from users in /home. Moving all that cruft out to another mounted drive solved things.

Just wanted to share as this can be another cause of the problem.

Solution 7 - Google Chrome

If somebody ran nginx as a different user in the past, ownership of cache folder may be twisted. I got

/var/cache/nginx# LANG=C ls -l proxy_temp/
total 40
drwx------ 18 nginx nginx 4096 Jul 14  2016 0
drwx------ 19 nginx nginx 4096 Jul 14  2016 1
drwx------ 19 nginx nginx 4096 Jul 14  2016 2
drwx------ 19 nginx nginx 4096 Jul 14  2016 3
drwx------ 19 nginx nginx 4096 Jul 14  2016 4
drwx------ 19 nginx nginx 4096 Jul 14  2016 5
drwx------ 19 nginx nginx 4096 Jul 14  2016 6
drwx------ 18 nginx nginx 4096 Jul 14  2016 7
drwx------ 18 nginx nginx 4096 Jul 14  2016 8
drwx------ 18 nginx nginx 4096 Jul 14  2016 9

while nginx was running as www-data. So the solution is to change ownership of nginx’s cache directory to the user nginx is running under. In the present case

/var/cache/nginx# chown -R www-data:www-data *

or, even simpler

# rm -r /var/cache/nginx/*

Solution 8 - Google Chrome

What worked for me was to change the proxy_temp_path to a folder with read/write permissions (777)

location / {
    proxy_temp_path /data/tmp;
}

Solution 9 - Google Chrome

I had same issue. Increasing the space of Directory or Folder where nginx is installed, solved the issue.

Solution 10 - Google Chrome

When I tried the aforementioned solution it didn't fix the issue. I also changed the permission to write on the location but it didn't work. Then I realized I did something wrong in there. In the location to store the file, I had something like

> "/storage" + fileName + ".csv"

. I was testing on the Windows environment and it was working great. But later when we moved the application to the Linux environment it stopped working. So later I had to change it to

> "./storage" + fileName + ".csv"

and it started working normally.

Solution 11 - Google Chrome

For me, the solution was:

sudo chown -R nginx:nginx /var/cache/nginx/fastcgi_temp/

Solution 12 - Google Chrome

For anyone using HAProxy as proxy and getting these exact same symptoms, increasing the timeout values resolved the issue for me:

timeout connect 5000 timeout client 50000 timeout server 50000

Solution 13 - Google Chrome

The only thing that helped me was the following settings in nginx site .conf file:

proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;

Solution 14 - Google Chrome

For me I had the same error except on a

different folder /var/lib/nginx/.

I changed the owner to nginx by

chown -R nginx:nginx /var/lib/nginx/. That did not work.

Then I checked who owned the nginx worker process by

ps aux| grep nginx

And it was running as nginx but when I looked through the nginx.conf file; I found that the user was nginx but it did not have any group. So, I added nginx to the user nginx; it turned out like this

user nginx nginx

Now I rebooted the system and the issue was fixed. I suppose I could have just used

chown -R nginx /var/lib/nginx/

That may have worked as well. So if anyone is facing this issue; firstly go into var/log/nginx and

check where the permission error occurred.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionamitView Question on Stackoverflow
Solution 1 - Google ChromeMiguel MotaView Answer on Stackoverflow
Solution 2 - Google ChromeamitView Answer on Stackoverflow
Solution 3 - Google ChromedjskinnerView Answer on Stackoverflow
Solution 4 - Google ChromealgenibView Answer on Stackoverflow
Solution 5 - Google ChromeNiyaz AhamadView Answer on Stackoverflow
Solution 6 - Google ChromeAndrewWhalanView Answer on Stackoverflow
Solution 7 - Google ChromekarlsebalView Answer on Stackoverflow
Solution 8 - Google ChromeChanrithView Answer on Stackoverflow
Solution 9 - Google ChromeParag GoenkaView Answer on Stackoverflow
Solution 10 - Google ChromeSandip SubediView Answer on Stackoverflow
Solution 11 - Google ChromeBertView Answer on Stackoverflow
Solution 12 - Google ChromemrsperlsView Answer on Stackoverflow
Solution 13 - Google ChromeBoško StojakovićView Answer on Stackoverflow
Solution 14 - Google Chromesakib11View Answer on Stackoverflow