【问题标题】:unset in Varnish - syntax error在 Varnish 中未设置 - 语法错误
【发布时间】:2010-06-01 05:46:45
【问题描述】:

我试图从 Varnish 中隐藏 Apache 在每个请求中返回的“Server”标头。

在子 vcl_fetch 中使用:

unset obj.http.Server;

在清漆开始时,我得到:

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

有什么想法吗?

【问题讨论】:

    标签: apache header varnish


    【解决方案1】:

    在最近的版本(2.1 系列)中,响应对象被称为 beresp,而在 vcl_fetch 中类似的东西确实工作(我刚刚在 Varnish 2.1.0 上测试过):

    unset beresp.http.Server;
    

    我安装了您正在使用的版本 (1.1.2) 并得到了您提到的完全相同的行为;看起来 unset 关键字不起作用,至少在 vcl_fetch 函数中不起作用。这很奇怪,因为我发现至少有一个例子提到了对 exact purpose 使用 unset。

    如果可能,我建议升级到最新的 Varnish,因为我认为如果您观察到的未设置行为是错误,那么团队不太可能愿意修复它。

    除此之外,您可能想尝试将 Server 设置为其他内容:

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

    假设您的目标是隐藏服务器签名。如果您想要完全消除标题,我敢说您的 Varnish 版本无法做到这一点。

    【讨论】:

      【解决方案2】:

      最终修复了它。

      我在 vcl_recv 中有一个返回(管道),这使得清漆永远不会进入我取消设置标题的 vcl_fetch。

      【讨论】:

        【解决方案3】:

        我正在使用 Varnish 1.1.2 也用 beresp 测试过,出现同样的错误。

        好像是 unset 出了点问题。 这是完整的获取:

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

        【讨论】:

          【解决方案4】:

          我开始安装 Varnish 2.1.2,这是迄今为止的最新版本。 我不再收到任何语法错误,但没有应用所需的效果。这个弹性标头仍然存在。

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

          我使用 Firebug 查看标题,这是我看到的:

          Server  Apache/2.2.9 (Debian)
          

          我尝试了一些变化,比如只是取消设置和不设置,没有任何效果。

          这可能是逻辑问题吗?也许未设置需要放在不同的 sub 中。我尝试将它放在 vcl_miss 和 vcl_deliver 中。两次都得到“方法中无法访问变量 'beresp.http.Server'..”。

          我还尝试设置自定义标题并将其删除。那也没用。

          【讨论】:

            猜你喜欢
            • 2013-12-03
            • 2014-02-22
            • 1970-01-01
            • 2017-05-23
            • 1970-01-01
            • 2015-04-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多