質問

ワニスから、すべてのリクエストでApacheによって返された「サーバー」ヘッダーを非表示にしようとしています。

sub vcl_fetchで使用:

unset obj.http.Server;

ワニススタートで私は得ます:

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

何か案は?

役に立ちましたか?

解決

最終的に修正しました。

VCL_RECVに戻り(パイプ)がありました。

他のヒント

最近のバージョン(2.1シリーズ)では、応答オブジェクトはberespと呼ばれ、vcl_fetchでこのようなものと呼ばれます します 作業(ワニス2.1.0でテストしたばかりです):

unset beresp.http.Server;

使用しているバージョン(1.1.2)をインストールし、言及したのとまったく同じ動作を受けました。少なくともVCL_FETCH関数では、UNSTETキーワードが機能しないように見えます。これは奇妙です、少なくとも1つの例は、私がそのために絶え間ないものを使用して言及したことを発見したので 正確な目的.

可能であれば、私は最新のワニスにアップグレードすることをお勧めします。あなたが観察した非セットの動作がバグである場合、チームはそれを修正する意思があると思います。

それを除いて、あなたはサーバーを何か他のものに設定してみてください:

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

あなたの目的を仮定することは、サーバーの署名を非表示にすることです。あなたが望むものがヘッダーを完全に排除することであるならば、私はそれがあなたのバージョンのバージョンではできないと言うことを冒険します。

私はBERESPでテストされたワニス1.1.2を使用していますが、同じエラーが発生します。

それは、それが絶え間ないものに問題があるようなものです。これが完全なフェッチです:

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

これまでの最新バージョンであるワニス2.1.2をインストールしました。構文エラーはもうありませんが、目的の効果は適用されません。この回復力のあるヘッダーはまだそこにあります。

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

私はFirebugを使用してヘッダーをのぞきます。ここに私が見ているものがあります:

Server  Apache/2.2.9 (Debian)

設定していないだけでなく、何も機能しないようなバリエーションを試しました。

それはロジックの問題になる可能性がありますか?たぶん、控えめに別のに配置する必要があります サブ. 。 VCL_MISSとVCL_DELIVERの両方に配置してみました。メソッドでアクセスできない「可変」beresp.http.server 'を取得しました。

また、カスタムヘッダーを設定して削除してみました。それもうまくいきませんでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top