当前位置:   article > 正文

GET 请求参数过大导致HTTP错误码 414 / 500 的问题_fastcgi request record is too big

fastcgi request record is too big

看了很多文章描述,通过修改nginx配置可以解决 414 Request-URI Too Large 的问题,比如可以调大这些参数:

  1. client_header_buffer_size 512k;
  2. large_client_header_buffers 4 512k;
  3. client_max_body_size 100m;

如果调大后,重启nginx,发现请求变成了 500 Internal Server Error,查看具体的 nginx 错误日志:

[alert] 8300#0: *17306727 fastcgi request record is too big: 66431, client: 192.168.*, server: test.net, request: "GET xxxx....";

翻看 Nginx 源码由此定义:

  1. if (len > 65535) {
  2. ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
  3. "fastcgi request record is too big: %uz", len);
  4. return NGX_ERROR;
  5. }

当GET请求的参数大于65535字节时,Nginx 转发给 FastCGI 的请求头将会大于65535字节,FastCGI 协议限制 64k 数据,Nginx会自动抛出异常并中断了请求。

可以查看FastCGI协议的定义:FastCGI协议详解 - Secret Garden (aiddroid.com)

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号