Pregunta

Estoy tratando de ocultar el encabezado "Servidor" devuelto por Apache en cada petición, de barniz.

Uso en sub vcl_fetch:

unset obj.http.Server;

en barniz empezar me sale:

Expected action, 'if' or '}'
(/etc/varnish/default.vcl Line 43 Pos 9)
    unset obj.http.Server;
--------#####-----------------

¿Alguna idea?

¿Fue útil?

Solución

Fija con el tiempo.

Yo tenía un retorno (tubería) en vcl_recv que hizo barniz Nunca se meta en vcl_fetch donde estaba desarmado la cabecera.

Otros consejos

En las últimas versiones (2.1 series) del objeto respuesta se llama beresp, y algo como esto en vcl_fetch hace de trabajo (acabo probado en barniz 2.1.0):

unset beresp.http.Server;

He instalado la versión que está utilizando (1.1.2) y consiguió el mismo comportamiento exacto que mencionas; parecería desarmar la palabra clave no funciona, al menos no en la función vcl_fetch. Esto es extraño, como al menos un ejemplo que encontré menciones usando unset para que exacta propósito .

Si es posible, me gustaría sugerir la actualización a la última barniz, ya que creo que es poco probable que, si la conducta que observó desarmado es un error, el equipo va a estar dispuesto a solucionarlo.

Aparte de eso, es posible que desee intentar establecer servidor a otra cosa:

set obj.http.Server = "";
set obj.http.Server = "BogoServer Whatever"; 

Asumiendo que su objetivo es ocultar la firma del servidor. Si lo que desea es eliminar por completo la cabecera, me atrevería a decir que no se puede hacer con su versión de barniz.

Estoy usando barniz 1.1.2 También a prueba con beresp y se produce el mismo error.

Es como si algo está mal con desarmado. Aquí está la completa tomará:

sub vcl_fetch {
    unset obj.http.Server;
    # force minimum ttl of 6 hours
    if (obj.ttl < 6h) {
            set obj.ttl = 6h;
    }
}

llegué a instalar Barniz 2.1.2 que es la versión más reciente hasta la fecha. Ya no consigo los errores de sintaxis, pero el efecto deseado no se aplica. Esta cabecera elástico es todavía allí.

sub vcl_fetch {
    unset beresp.http.Server;
    set beresp.http.Server = "Apache";
}

Yo uso Firebug para vistazo a las cabeceras, esto es lo que veo:

Server  Apache/2.2.9 (Debian)

He intentado algunas variaciones como acaba de desarmado y no establecer, nada funciona.

¿Puede ser un problema de la lógica? Tal vez las necesidades no se ha establecido para ser colocado en un diferente sub . Probé colocándolo en tanto vcl_miss y vcl_deliver. Conseguido "Variable 'beresp.http.Server' no es accesible en el método .." en ambas ocasiones.

También he intentado establecer una cabecera personalizada y retirarlo. Que no funcionaron bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top