Cómo ajustar el tamaño límite del encabezado de los servidores nginx y apache
Hoy en día, los principales servidores apache y nginx pueden establecer libremente el tamaño límite superior de la información del encabezado. Esto lo logramos mediante la modificación del archivo de configuración.
El límite superior predeterminado de longitud del encabezado de nginx es 4k. Si excede este valor.
Si la solicitud de información del encabezado excede, nginx devolverá directamente un error 400.
Sí Utilice los siguientes 2 parámetros para ajustar el límite de encabezado de nginx
client_header_buffer_size 16k;
large_client_header_buffers 4 16k;
Parece que nginx usará el búfer client_header_buffer_size de forma predeterminada Para leer el valor del encabezado, si el encabezado es demasiado grande, usará large_client_header_buffers para leer
Referencia client_header_buffer_size
sintaxis: client_header_buffer_size tamaño
predeterminado: 1k
p>
contexto: un tamaño de buffer de 1K es completamente suficiente
Sin embargo, si hay una cookie grande en el encabezado de la solicitud o la solicitud proviene de un wap. cliente, el encabezado no se puede colocar en 1K, por lo tanto, el encabezado de solicitud o una línea del encabezado de solicitud no se encuentra completamente en este búfer. nginx asigna un búfer más grande, el tamaño del búfer más grande se puede configurar con la instrucción large_client_header_buffers.
Cita large_client_header_buffers
sintaxis: tamaño del número large_client_header_buffers
predeterminado: large_client_header_buffers 4 4k/8k
contexto: http, servidor
La directiva asigna el número y tamaño máximo de buffers para que los encabezados grandes se lean desde la solicitud del cliente.
La línea de solicitud no puede ser mayor que el tamaño de un buffer, si el cliente envía un encabezado más grande. nginx devuelve el error "La solicitud URI es demasiado grande" (414).
La línea de encabezado más larga de la solicitud tampoco debe superar el tamaño de un búfer; de lo contrario, el cliente recibirá el error "Solicitud incorrecta" (400). ).
Los buffers se separan solo según sea necesario.
De forma predeterminada, el tamaño de un buffer es igual al.
El tamaño de la página, dependiendo de la plataforma, es 4K u 8K, si al final de la conexión de solicitud de trabajo se convierte al estado keep-alive, entonces estos buffers se liberan.
Para Apache2, su valor predeterminado es 8k<. /p>
Se pueden ajustar los siguientes 2 parámetros
LimitRequestLine 16k
LimitRequestFieldSize 16k
El comando LimitRequestLine establece el límite superior de cada longitud de encabezado
Haga referencia a la directiva LimitRequestLine
La descripción limita el número de bytes en la línea de solicitud HTTP enviada por el cliente
Sintaxis LimitRequestLine bytes
Predeterminado value LimitRequestLine 8190
Configuración del servidor de alcance
Núcleo de estado (C)
Núcleo del módulo
bytes establecerá los bytes de la solicitud HTTP límite de número de línea.
La directiva LimitRequestLine permite a los administradores del servidor aumentar o disminuir el límite en el tamaño permitido de las líneas de solicitud HTTP del cliente. Debido a que la línea de solicitud incluye el método HTTP, el URI y la versión del protocolo, la directiva LimitRequestLine limita la longitud del URI de solicitud. El servidor necesitará que este valor sea lo suficientemente grande como para contener todos los nombres de sus recursos, incluida cualquier información que pueda pasarse en la parte de consulta de una solicitud GET.
Esta directiva brinda a los administradores del servidor un mayor control sobre el comportamiento anormal de las solicitudes de los clientes. Esto ayuda a evitar ciertas formas de ataques de denegación de servicio.
La directiva LimitRequestFieldSize establece el límite superior de la longitud total de todos los encabezados
Haga referencia a la directiva LimitRequestFieldSize
Explicación para limitar el número de bytes de encabezados de solicitud enviados por el cliente
Sintaxis LimitRequestFieldsize bytes
Valor predeterminado LimitRequestFieldsize 8190
Configuración del servidor de alcance
Estado del núcleo (C)
El núcleo del módulo
bytes especifica el tamaño de bytes permitido de los encabezados de solicitud HTTP.
La directiva LimitRequestFieldSize permite a los administradores del servidor aumentar o disminuir el límite de tamaños de campos de encabezado de solicitud HTTP. En términos generales, el servidor necesita que este valor sea lo suficientemente grande como para acomodar el tamaño del campo de encabezado de cualquier solicitud de un cliente normal. El tamaño de un campo de encabezado común varía mucho de un cliente a otro y generalmente está estrechamente relacionado con la configuración del usuario de su navegador para admitir más protocolos de contenido. La longitud máxima posible del encabezado de autenticación de SPNEGO es 12392 bytes.
Esta directiva brinda a los administradores del servidor un mayor control sobre el comportamiento anormal de las solicitudes de los clientes. Esto ayuda a evitar ciertas formas de ataques de denegación de servicio. Nota: esta configuración está configurada en apache root/manual/mod/core.xml