如何为 nginx 请求设置允许的 url 长度(错误代码:414,uri 太大)

Posted

技术标签:

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

我在 10 个杂种面前使用 nginx

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

错误代码 414:uri 太大

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

【问题讨论】:

【参考方案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

【讨论】:

以上是关于如何为 nginx 请求设置允许的 url 长度(错误代码:414,uri 太大)的主要内容,如果未能解决你的问题,请参考以下文章

如何为 NGINX 负载均衡器设置例外

如何为无 ALPN 客户端配置 Nginx 仅支持 HTTP2

如何为 Forge API 提供签名的 url 以创建 revit 文件

如何为 laravel-vujs 项目设置 root/base url?

Solr Highlighting:如何为同一字段请求多个片段长度?

Django CMS如何为同一个apphook的2个实例使用不同的url