Nginx Web 服务器错误 - 上游从上游读取响应标头时发送的标头太大

Posted

技术标签:

【中文标题】Nginx Web 服务器错误 - 上游从上游读取响应标头时发送的标头太大【英文标题】:Nginx Web Server Error - upstream sent too big header while reading response header from upstream 【发布时间】:2021-02-04 21:45:32 【问题描述】:

我有一个 nginx 网络服务器,运行我正在开发的两个站点,它们基本上是相同的站点,具有相同的配置,建立在 Laravel 框架上。两者都有登录设置,但每当我尝试登录时都会给我一个 502 错误。每当我尝试登录时,我都会收到 502 错误,如果我检查 nginx 错误日志,我会看到以下内容:

2020/10/21 22:26:59 [错误] 10400#10400: *12 上游发送太大 从上游读取响应标头时标头,客户端: 162.158.179.216,服务器:vms2.medlab.co,请求:“POST /login HTTP/1.1”,上游:“fastcgi://unix:/run/php/php7.4-fpm.sock:”,主机: “vms2.medlab.co”,引用者:“https://vms2.medlab.co/”

我的网站配置文件如下,和我的其他网站完全一样,运行良好:

#http
server 
    listen         80;
    server_name    vms2.medlab.co;
    root           /var/www/vms.medlab.co/current/public;
    index          index.php index.html index.htm;

    location / 
        try_files $uri $uri/ /index.php?$query_string;
    

    location = /favicon.ico  access_log off; log_not_found off; 
    location = /robots.txt   access_log off; log_not_found off; 

    location ~* \.php$ 
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass unix:/run/php/php7.4-fpm.sock;
      include         fastcgi_params;
      fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
      fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    


# HTTPS
server 
  listen 443 ssl http2;
  server_name vms2.medlab.co;
  root        /var/www/vms.medlab.co/current/public;
  index       index.php index.html index.htm;


  #ssl on;
  ssl_certificate         /etc/nginx/ssl/cloudflare-medlab.co.crt;
  ssl_certificate_key     /etc/nginx/ssl/cloudflare-medlab.co.key;

  location ~ /\. 
    deny all;
  


  location / 
    access_log /var/www/vms.medlab.co/logs/access.log combined;
    error_log /var/www/vms.medlab.co/logs/error.log;
    try_files $uri $uri/ /index.php?$query_string;
  

  location ~* \.php$ 
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/run/php/php7.4-fpm.sock;
    include         fastcgi_params;

    fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
  

我发现了很多关于快速 cgi 的问题,并尝试了一些快速修复,但到目前为止都没有运气。有没有人遇到过类似的事情,还有什么我应该尝试的吗?

提前致谢

【问题讨论】:

【参考方案1】:

找到问题了!

必须在 nginx.conf 文件中添加以下内容

    http  
...
    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    fastcgi_connect_timeout 90;
    fastcgi_send_timeout 90;
    fastcgi_read_timeout 90;

【讨论】:

以上是关于Nginx Web 服务器错误 - 上游从上游读取响应标头时发送的标头太大的主要内容,如果未能解决你的问题,请参考以下文章

上游从上游、客户端(nginx、varnish)读取响应头时发送了太大的头

NGINX:从上游读取响应头时上游超时(110:连接超时)

错误:从上游 [uWSGI/Django/NGINX] 读取响应标头时,上游过早关闭连接

AWS Nginx“从上游读取响应标头时上游过早关闭连接”

*10 上游超时(110:连接超时),同时使用 uwsgi 从上游读取响应头

NGINX - 从上游读取时拒绝重命名权限