net :: ERR_CONTENT_LENGTH_MISMATCH在Nginx 1.8.0上 [英] net::ERR_CONTENT_LENGTH_MISMATCH on nginx 1.8.0

查看:110
本文介绍了net :: ERR_CONTENT_LENGTH_MISMATCH在Nginx 1.8.0上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我注意到用net::ERR_CONTENT_LENGTH_MISMATCH无法加载angular时,问题就开始了.

The problem started when I noticed that angular failed to load with net::ERR_CONTENT_LENGTH_MISMATCH.

完整的错误列表:

GET http://xyx.com/assets/angular/angular.js?body=1 net::ERR_CONTENT_LENGTH_MISMATCH
Uncaught ReferenceError: angular is not defined(anonymous function) @ angular-cookie.js?body=1:7
Uncaught ReferenceError: angular is not defined(anonymous function) @ ui-bootstrap-tpls.js?body=1:9
Uncaught TypeError: Cannot read property 'isDefined' of undefined(anonymous function) @ angular-ui-router.js?body=1:19(anonymous function) @ angular-ui-router.js?body=1:4340
Uncaught ReferenceError: angular is not defined(anonymous function) @ ng-optimizely.js?body=1:1
Uncaught TypeError: Cannot read property '$$minErr' of undefined(anonymous function) @ angular-resource.js?body=1:9(anonymous function) @ angular-resource.js?body=1:628
Uncaught ReferenceError: angular is not defined

我做了一些研究,使我检查了nginx错误日志.日志产生以下错误:

I did some research which lead me to check the nginx error log. The log produced the following error:

2015/11/11 16:26:31 [crit] 39125#0: *255 open() "/usr/local/var/run/nginx/proxy_temp/4/00/0000000004" failed (13: Permission denied) while reading upstream, client: x.x.x.x, server: xyx.com, request: "GET /assets/angular/angular.js?body=1 HTTP/1.1", upstream: "http://x.x.x.x:9090/assets/angular/angular.js?body=1", host: "xyz.com", referrer: "url_here"

我发现了一个帖子,其中有一个类似的问题.但是,删除/usr/local/var/run/nginx目录的内容并重新启动nginx并不能解决问题.

I found a post that had a similar issue. However, deleting the contents of the /usr/local/var/run/nginx directory and restarting nginx did not solve the problem.

我还验证了nginx worker进程是否由/usr/local/var/run/nginx/proxy_temp目录的同一所有者运行,如另一个

I also verified that the nginx worker process was being run by the same owner of the /usr/local/var/run/nginx/proxy_temp directory, as mentioned in another post (user is nobody). Changing permissions to 777 didn't work either.

此问题在我的开发环境中发生.我正在使用带有El Capitan(10.11.1)和nginx版本1.8.0的Mac.任何帮助,将不胜感激.

This problem is occurring in my Dev environment. I'm using a Mac with El Capitan (10.11.1) and nginx version 1.8.0. Any assistance with this would be greatly appreciated.

nginx配置文件:

nginx config file:

server {
  listen 80;

  server_name www.local.site.com;
  return 301 https://local.site.com$request_uri;
}

server {
  listen 80;
  server_name local.sell.site.com;

  location / {
    proxy_pass http://x.x.x.x:9090;
  }
}

server {
  listen 443;
  server_name local.sell.site.com;

  ssl on;
  ssl_certificate /Users/sheldon/Repos/site/config/nginx/ssl/site.crt;
  ssl_certificate_key /Users/sheldon/Repos/site/config/nginx/ssl/site.key;
  ssl_session_timeout  5m;
  ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "[Removed]";
  ssl_prefer_server_ciphers on;


  location / {
    proxy_pass http://x.x.x.x:9090;
  }
}

server {
  listen 443;

  root /Users/sheldon/Repos/site/www;
  index index.php;
  server_name local.site.com;
  access_log /Users/sheldon/logs/nginx/local.site.com.access.log;
  error_log /Users/sheldon/logs/nginx/local.site.com.error.log;

  ssl on;
  ssl_certificate /Users/sheldon/Repos/site/config/nginx/ssl/site.crt;
  ssl_certificate_key /Users/sheldon/Repos/site/config/nginx/ssl/site.key;
  ssl_session_timeout  5m;
  ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "[Removed]";
  ssl_prefer_server_ciphers on;

  large_client_header_buffers 4 8m;

  location ~* (.+)\.(\d+)\.(js|css|png|jpg|jpeg|gif)$ {
    try_files $uri $1.$3;
  }

  location / {
      index index.html index.php;
      try_files $uri $uri/ @handler;
      expires 30d;
  }

  location ^~ /media/downloadable/ { deny all; }

  location  /. {
      return 404;
  }

  location @handler {
      rewrite / /index.php;
  }

  location ~ .php/ {
      rewrite ^(.*.php)/ $1 last;
  }

  location ~ \.php$ {
      if (!-e $request_filename) {
      rewrite / /index.php last;
      }
      expires off;
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/tmp/php5-fpm.sock;
      fastcgi_index index.php;
      fastcgi_intercept_errors on;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_param MAGE_RUN_TYPE store;
      fastcgi_param ENVIRONMENT dev;
      fastcgi_param MAGE_IS_DEVELOPER_MODE true;
      fastcgi_buffer_size 128k;
      fastcgi_buffers 4 256k;
      fastcgi_busy_buffers_size 256k;
      fastcgi_read_timeout 420;
      include fastcgi_params;
  }

  location /api { 
      rewrite ^/api/rest /api.php?type=rest; 
  }
}

推荐答案

还必须向运行nginx的用户授予足够的权限,该用户正在承载上游http://x.x.x.x:9090并拥有已部署的源代码的目录.

You have also to give enough permission to the user under which nginx is running to the directory that is hosting your upstream http://x.x.x.x:9090 and having your deployed source code.

这篇关于net :: ERR_CONTENT_LENGTH_MISMATCH在Nginx 1.8.0上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆