net :: ERR_CONTENT_LENGTH_MISMATCH在Nginx 1.8.0上 [英] net::ERR_CONTENT_LENGTH_MISMATCH on 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屋!