Nginx proxy_pass响应被截断


9

我使用nginx将https请求代理到我的应用程序服务器(当前在8443上运行)。
此应用程序服务器提供动态页面,其中一些页面包括jquery缩小了。
页面出现错误,因为jquery似乎被截断了...是否存在文件大小限制或其他限制?

我的nginx conf是以下内容:

server {
listen      443;
server_name my_serv.com;
ssl                 on;
ssl_certificate     certificate.pem;
ssl_certificate_key privatekey.pem;

keepalive_timeout 70;

location / {
  proxy_pass https://localhost:8443;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_buffering off;
  proxy_buffers 8 8k;
}
}

2
检查您的错误日志。它应该告诉您为什么任何连接都提前关闭。
kolbyjack 2011年

为什么不让Nginx提供诸如jquery.js之类的静态文件?
VBart 2012年

Answers:


8

我知道这个问题太老了,但是我遇到了同样的问题。确保您正在以nginx身份运行的用户具有对proxy_temp目录的写特权。如果您通过代理服务器提供的响应较大,而不能全部保留在proxy_buffers中,则其余响应数据将写入到proxy_temp目录中的磁盘中。如果由于权限不足(或其他原因,例如磁盘空间)而不能这样做,则响应将被截断。

一个简单的方法就是解决这个问题,即清除浏览器缓存,并在打开Chrome开发人员工具的情况下重新加载页面。在网络标签中找到被截断的文件,如果大小与您的代理缓冲区大小(在您的情况下为64k)匹配,则nginx可能存在写入磁盘的问题。

有关Nginx proxy_temp_path的更多信息:http ://wiki.nginx.org/HttpProxyModule#proxy_temp_path


1
您的回答启发了我解决类似的问题
Tyler Long

0

如果在acces日志中看到截断文件的返回码304(未修改),请尝试清除浏览器的缓存。不幸的是,我找不到从nginx配置中“修复”此问题的方法。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.