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

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

当我提出一个大于2900的请求时,我会得到一个:

错误代码414: uri 太大

是否有人知道在 nginx 配置文件中的设置,它决定允许的 uri 长度?

144336 次浏览

From: http://nginx.org/r/large_client_header_buffers

Syntax: large_client_header_buffers number size ;
Default: large_client_header_buffers 4 8k;
Context: http, server

Sets the maximum number and size of buffers used for reading large client request header. A request line cannot exceed the size of one buffer, or the 414 (Request-URI Too Large) error is returned to the client. A request header field cannot exceed the size of one buffer as well, or the 400 (Bad Request) error is returned to the client. Buffers are allocated only on demand. By default, the buffer size is equal to 8K bytes. If after the end of request processing a connection is transitioned into the keep-alive state, these buffers are released.

so you need to change the size parameter at the end of that line to something bigger for your needs.

For anyone having issues with this on https://forge.laravel.com, I managed to get this to work using a compilation of SO answers;

You will need the sudo password.

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

Replace contents with the following;

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;

I had very similar issue but with a different error

upstream sent too big header while reading response header from upstream

In order to fix it I've changed

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

For more information you can visit nginx-doc