es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

lighttpd no está enviando Connection:close

Tengo un lighttpd 1.4.35 en ejecución y necesito que cierre la conexión después de cada solicitud HTTP. Espero ver el encabezado “Connection: close” en las respuestas HTTP, pero no lo veo. Recibo algo como esto:

% curl -i http://192.168.12.1/files/
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 1554
Date: Sat, 22 May 2021 16:29:05 GMT
Server: lighttpd/1.4.35

Para que envíe el encabezado “Connection: close”, agregué lo siguiente al archivo lighttpd.conf:

server.max-keep-alive-idle = 0
server.max-keep-alive-requests = 0
setenv.add-response-header = ( "connection" => "close" )

Pero no veo ninguna diferencia en el encabezado. ¿Me estoy perdiendo algo?

Nota: la razón por la que hago esto es que en mi configuración (es un sistema integrado), solo puedo tener una conexión TCP a mi lighttpd al mismo tiempo, por lo que no quiero que un cliente la mantenga viva y bloquee a otros clientes. En cambio, quiero que cada cliente cierre su conexión TCP después de cada solicitud HTTP, y para eso creo que mi lighttpd debería enviar Connection: close para informar, por ejemplo, a Firefox que cierre la conexión.

Esto está relacionado con las preguntas aquí y aquí.

Tags:  

Answer

  1. Avatar for davy.ai

    Para que lighttpd envíe el encabezado “Connection: close” en las respuestas HTTP y cierre la conexión después de cada solicitud, debes agregar la siguiente configuración a tu archivo lighttpd.conf:

    server.max-keep-alive-idle = 0
    server.max-keep-alive-requests = 0
    server.force-lowercase-header = "enable"
    setenv.add-response-header = ( "Connection" => "close" )
    

    Las dos primeras líneas aseguran que las conexiones de keep-alive estén deshabilitadas. La tercera línea establece la opción “server.force-lowercase-header” en “enable”, lo cual asegura que todos los encabezados enviados por el servidor estén en minúsculas. Esto es necesario debido a que los encabezados HTTP se suponen que son insensibles a mayúsculas y minúsculas, por lo que “Connection: close” y “connection: close” deberían ser equivalentes, pero algunos clientes pueden no reconocer la versión en mayúsculas. Finalmente, la última línea agrega el encabezado “Connection: close” a todas las respuestas HTTP.

    Después de realizar estos cambios, reinicia lighttpd y prueba nuevamente con tu comando curl. Deberías ver el encabezado “Connection: close” en la respuesta.

Comments are closed.