Nginx proxy_pass 响应被截断

Luc*_*Luc 10 nginx jquery node.js

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

我的 nginx 配置如下:

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;
}
}
Run Code Online (Sandbox Code Playgroud)

小智 9

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

一个简单的判断方法是清除浏览器缓存,并在打开 Chrome 开发者工具的情况下重新加载页面。在网络选项卡中找到截断的文件,如果大小与您的代理缓冲区大小匹配(在您的情况下为 64k),则 nginx 可能在写入磁盘时出现问题。

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


pol*_*ial -1

有,但默认为 1G:

http://wiki.nginx.org/HttpProxyModule#proxy_max_temp_file_size

就像@kolbyjack所说,error.log中可能有错误可供查看。

  • 这只是定义了临时文件的最大大小。如果不能全部缓冲,nginx 不会截断响应,它将从上游同步提供。 (2认同)