【问题标题】:How to set the allowed url length for a nginx request (error code: 414, uri too large)如何为 nginx 请求设置允许的 url 长度(错误代码:414,uri 太大)
【发布时间】:2010-11-07 05:30:11
【问题描述】:

我在 10 个杂种面前使用 Nginx。

当我发出大于 2900 的请求时,我会返回:

错误代码 414:uri 太大

有谁知道 nginx 配置文件中决定允许的 uri 长度的设置吗?

【问题讨论】:

    标签: nginx webserver http-request


    【解决方案1】:

    发件人:http://nginx.org/r/large_client_header_buffers

    语法: large_client_header_buffers number size ;
    默认值: large_client_header_buffers 4 8k;
    上下文: http,服务器

    设置用于读取大型客户端请求标头的缓冲区的最大 numbersize。一个请求行不能超过一个缓冲区的大小,否则返回414(Request-URI Too Large)错误给客户端。请求头字段也不能超过一个缓冲区的大小,否则会向客户端返回 400 (Bad Request) 错误。缓冲区仅按需分配。默认情况下,缓冲区大小等于 8K 字节。如果在请求处理结束后连接转换为保持活动状态,则释放这些缓冲区。

    因此您需要将该行末尾的 size 参数更改为更大的参数以满足您的需要。

    【讨论】:

    • 谢谢@VBart - 当我回答这个问题时,wiki 是唯一的文档,所以我没有意识到他们已经添加了一个“官方”文档部分。
    • 您好,您应该添加;到语法 large_client_header_buffers 4 4k/8k 的末尾;有一些像我这样的懒惰的复制粘贴,你可以通过添加它来节省他们的时间......;)
    • 感谢@talsibony - 这是 7 年前文档的直接复制/粘贴,看起来他们从那时起就对其进行了更新。我会在这里更新它...
    • 它解决了 414 错误,但现在 nginx 给出 502 - Bad Gateway 错误。
    • 我不确定哪个文件应该有那个配置,有人知道吗?
    【解决方案2】:

    对于在https://forge.laravel.com 上遇到此问题的任何人,我设法使用 SO 答案的汇编来解决此问题;

    您将需要 sudo 密码。

    sudo nano /etc/nginx/conf.d/uploads.conf
    

    将内容替换为以下内容;

    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    
    client_max_body_size 24M;
    client_body_buffer_size 128k;
    
    client_header_buffer_size 5120k;
    large_client_header_buffers 16 5120k;
    

    【讨论】:

    • 通过 Forge 创建新服务器时,该文件似乎不再存在,这意味着您可以通过 Forge 管理面板将其直接添加到服务器块中。
    【解决方案3】:

    我有非常相似的问题,但有不同的错误

    从上游读取响应标头时,上游发送了太大的标头

    为了修复它我已经改变了

    server {
    ....
    proxy_buffers   4 32k;
    proxy_buffer_size   32k;
    ...
    }
    

    欲了解更多信息,您可以访问nginx-doc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      • 2017-12-14
      • 2014-03-28
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      相关资源
      最近更新 更多