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

Pra*_*man 52 webserver nginx http-request

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

当我提出大小超过2900的请求时,我会回来:

错误代码414:uri太大了

有没有人知道nginx配置文件中确定允许的uri长度的设置?

Sto*_*bor 90

来自:http://nginx.org/r/large_client_header_buffers

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

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

所以你需要将该行末尾的size参数更改为更大的需求.

  • 它解决了 414 错误,但现在 nginx 给出了 502 - Bad Gateway 错误。 (3认同)
  • 谢谢@VBart - 当我回答这个问题时,维基是唯一的文档,所以我没有意识到他们已经添加了"官方"文档部分. (2认同)

Luk*_*den 13

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

您将需要 sudo 密码。

sudo nano /etc/nginx/conf.d/uploads.conf
Run Code Online (Sandbox Code Playgroud)

将内容替换为以下内容;

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;
Run Code Online (Sandbox Code Playgroud)


小智 6

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

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

为了修复它我已经改变了

server {
....
proxy_buffers   4 32k;
proxy_buffer_size   32k;
...
}
Run Code Online (Sandbox Code Playgroud)

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