nginx 1.8.0上的net :: ERR_CONTENT_LENGTH_MISMATCH

时间:2015-11-11 22:28:04

标签: javascript angularjs nginx

当我注意到角度无法加载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错误日志。该日志产生以下错误:

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"

我发现post有类似问题。但是,删除/usr/local/var/run/nginx目录的内容并重新启动nginx并没有解决问题。

我还验证了nginx工作进程是由/usr/local/var/run/nginx/proxy_temp目录的同一个所有者运行的,如另一个post中提到的那样(用户是没人)。将权限更改为777也不起作用。

我的Dev环境中出现此问题。我正在使用带有El Capitan(10.11.1)和nginx版本1.8.0的Mac。对此的任何帮助将不胜感激。

nginx配置文件:

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; 
  }
}

1 个答案:

答案 0 :(得分:0)

您还必须为运行nginx的用户提供足够的权限,以便托管您的上游http://x.x.x.x:9090并拥有已部署的源代码。