【问题标题】:NGINX: Download stops after 1GB - upstream timed out (110: Connection timed out)NGINX:下载在 1GB 后停止 - 上游超时(110:连接超时)
【发布时间】:2025-12-14 00:45:01
【问题描述】:

我的网站上有一个大问题。 请帮我解决它。

我有一个站点,用户可以在其中从其他不同站点下载文件(例如像 upload.net 这样的一键式主机)。我们就像一个代理。用户生成链接并直接下载文件。我们的脚本不会在服务器上下载任何内容。有点像高级链接生成器,但不同。并且不违法。

如果用户正在下载大于1GB的文件,当达到1GB时下载将被取消。

在日志文件中我发现重复错误 “读取响应时上游超时(110:连接超时)”

我曾尝试将设置调高,但没有帮助。

我尝试了以下操作:

1. nginx.conf:
   fastcgi_send_timeout 300s;
   fastcgi_read_timeout 300s;

2. nginx host file:
   fastcgi_read_timeout 300;
   fastcgi_buffers 8 128k;
   fstcgi_buffer_size 256k;

3. PHP.ini:
   max_execution_time = 60 (but my php script will set it automaticly to 0)
   max_input_time = 60
   memory_limit = 128M

4. PHP-FPM >> www.conf
   pm.max_children = 25
   pm.start_servers = 2
   pm.min_spare_servers = 2
   pm.max_spare_servers = 12
   request_terminate_timeout = 300s

但没有任何帮助。我该怎么做才能解决这个问题?

Server/Nginx Infos:
Memory: 32079MB
CPU: model name: Intel(R) Xeon(R) CPU E3-1230 v3 @ 3.30GHz (8 Cores)
PHP: PHP 5.5.15-1~dotdeb.1 (cli) (built: Jul 24 2014 16:44:04)
NGINX: nginx/1.2.1

nginx.conf:
worker_processes  8;
worker_connections  2048;

但我认为时间设置并不重要。因为每次下载都恰好在 1.604.408 KB 上停止。如果我以 20kb/s 下载,则下载需要更多时间,但会在 1.604.408 KB 时取消。

感谢您的帮助。 如果您需要更多信息,请询问我。

【问题讨论】:

  • 请尝试使用 Nginx 的更新版本 - v1.2.1 真的很旧。
  • 尝试提高nginx.conf中“fastcgi_connect_timeout”、“fastcgi_read_timeout”的值。
  • 我正在使用 dotdeb 包,所以我必须删除 nginx 和 php 才能安装正常/更新。或者我可以在调整sources.list 时简单地覆盖包吗?我应该尝试“fastcgi_connect_timeout”的值是多少?
  • 这个问题已经解决了。对于所有其他有相同问题的人:我们的问题是,服务器/脚本将所有内容下载到临时文件夹中。默认值为 1024mb。我们通过 nginx.conf 中的“max_temp_file_size 16G”将值设置为 16gb
  • 您能否将您的解决方案发布为答案并标记为已接受? :)

标签: nginx php


【解决方案1】:

我遇到了类似的问题,下载会在 1024MB 处停止并出现错误

readv() failed (104: Connection reset by peer) while reading upstream

将此添加到 nginx.conf 文件有帮助:

fastcgi_max_temp_file_size 1024m;

【讨论】: