前两天遇到个奇怪的问题,一位用户访问墨水后台报错502,但其他用户访问却正常,找了半天都没找到原因。后来翻看了Nginx日志,错误内容如下:
2023/05/30 14:50:57 [error] 1930#0: *93 upstream sent too big header while reading response header from upstream, client: 125.46.235.179, server: yu.ink, request: "GET /wp-admin/profile.php HTTP/1.1", upstream: "fastcgi://unix:/tmp/php-73-cgi.sock:", host: "yu.ink", referrer: "https://yu.ink/wg9525541228/"
记录时间:2023年5月30日14:50:57,客户端IP地址为125.46.235.179向yu.ink服务器发送了一个GET请求,目标URL是/wp-admin/profile.php
,这是WordPress后台的一个用户配置文件页面。服务器在处理这个请求时遇到了错误,错误信息为“upstream sent too big header while reading response header from upstream”。这个错误意味着服务器在从上游(这里的FastCGI PHP进程)读取响应头时,收到了过大的头信息。在Nginx服务器中,如果收到的FastCGI响应头大小超过了缓冲区的大小,就会发生这种错误。为了解决这个问题,可以增大fastcgi_buffer_size
和fastcgi_buffers
的值。
为解决这个问题,可以在Nginx配置文件中的location ~ \.php(.*)$
块内增加或修改这两个参数,增大它们的值。例如:
location ~ \.php(.*)$ {
fastcgi_pass unix:/tmp/php-73-cgi.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
fastcgi_param PATH_INFO $2;
fastcgi_buffer_size 128k; # 增加或修改这行
fastcgi_buffers 4 256k; # 增加或修改这行
include fcgi.conf;
}
在这个例子中,我设置了fastcgi_buffer_size
为128k,fastcgi_buffers
为4个256k。这只是一个例子,您可能需要根据您的应用和服务器的性能来调整这些值。
最后,记得在修改配置文件后,需要重新加载或重启Nginx服务以使更改生效。
请注意,过大的缓冲区可能会浪费服务器资源,过小的缓冲区则可能导致错误,因此请根据实际需要进行调整。