Domanda

Sto cercando di nascondere l'intestazione "Server" restituito da Apache a ogni richiesta, dalla vernice.

Utilizzo in sub vcl_fetch:

unset obj.http.Server;

sulle unghie inizio ottengo:

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

Tutte le idee?

È stato utile?

Soluzione

fissi alla fine.

Ho avuto un ritorno (tubo) in vcl_recv che fatto vernice mai andare in vcl_fetch dove stavo disinserimento l'intestazione.

Altri suggerimenti

Nelle versioni più recenti (2.1 serie) l'oggetto di risposta si chiama beresp, e qualcosa di simile in vcl_fetch ha di lavoro (ho appena provato su Vernice 2.1.0):

unset beresp.http.Server;

ho installato la versione che si sta utilizzando (1.1.2) ed ha ottenuto lo stesso comportamento esatto si parla; sembrerebbe la parola chiave impostata non funziona, almeno non nella funzione vcl_fetch. Questo è strano, come almeno un esempio che ho trovato menzioni usando unset per quella esatto scopo .

Se possibile, io suggerirei l'aggiornamento alla più recente per unghie, come penso che sia improbabile che, se il comportamento non impostato si osserva è un bug, la squadra sarà disposta a risolvere il problema.

A parte ciò, si potrebbe desiderare di provare a impostare Server a qualcosa d'altro:

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

Supponendo che il vostro obiettivo è quello di nascondere la firma del server. Se quello che vuoi è quello di eliminare l'intestazione del tutto, mi permetto di dire che non può essere fatto con la versione di vernice.

sto usando vernice 1.1.2 testato anche con beresp e si verifica lo stesso errore.

E 'come se fosse qualcosa di sbagliato con disinserito. Ecco la piena fetch:

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

ho avuto intorno installare Varnish 2.1.2, che è la versione più recente fino ad oggi. Non ho più ottenere eventuali errori di sintassi, ma l'effetto desiderato non viene applicato. Questa intestazione resiliente è ancora lì.

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

Io uso Firebug per sbirciare le intestazioni, ecco cosa vedo:

Server  Apache/2.2.9 (Debian)

Ho provato alcune variazioni come solo disinserimento e non l'impostazione, non funziona nulla.

Può essere un problema di logica? Forse le esigenze non impostate ad essere messi in un diverso sub . Ho provato mettendolo in entrambi vcl_miss e vcl_deliver. Got "Variabile 'beresp.http.Server' non è accessibile in modo .." entrambe le volte.

Inoltre ho provato a installare un header personalizzato e la rimozione. Che non ha funzionato neanche.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top