Nginx 警告-上游发送了更多数据

Nginx 警告-上游发送了更多数据

我在北边安装了一堆Nginx + PHP8.0-fpm,当爬虫访问某个页面,请求中包含If-Modified-Since header,但是页面没有发生改变时,站点返回“304 Not Modified” header,如果请求协议是HTTP/2.0,一切正常,但如果请求协议是HTTP/1.1,Nginx日志中就会出现警告:

[warn] 910 # 910: * 21961 upstream sent more data than specified in "Content-Length" header while reading upstream, client: 66.249.76.145, server: site.com, request: "GET /category/page-title.html HTTP / 1.1 ", upstream:" fastcgi: // unix: /var/www/php-fpm/12345.sock: ", host:"site.com"

网站引擎肯定不会向 Nginx 提供 Content-Length 标头,因此没有内容。我通过 CURL 向网站发出带有 If-Modified-Since 标头的请求来测试这一点。

为什么 Nginx 会显示此警告?这是 Nginx 错误吗?

答案1

你可能错误地认为没有内容因为 Nginx 还没有转发给你。将记录的警告视为“Nginx已丢弃上游发送了数据,尽管它不应该发送任何数据”。

204/304 被硬编码为表现为零内容长度。Nginx 的错误是误导性消息 - 但从 fastcgi 上游接收额外数据可能是正确的。

可能出现警告、错误或换行符(可以通过以下方法避免不是?>在 .php 文件中使用)由 php 打印返回状态代码。当您临时更改脚本中返回的状态代码时,它应该变得可见。

相关内容