You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Varnish如何配置无缓存透传路由并保留X-Forwarded-For等请求头

Varnish 指定路由不缓存透传完整配置

你之前使用pipe模式不符合预期是因为pipe是直接透传TCP连接,跳过Varnish的标准请求头处理逻辑,不会自动追加X-Forwarded-For等代理头,还会出现连接复用导致同连接下后续请求路由匹配异常的问题,改用pass模式即可满足需求:

完整VCL配置

vcl 4.1;

# 默认后端,根据实际业务调整参数
backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

# 博客业务专属后端
backend blog {
    .host = "127.0.0.1";
    .port = "8083";
}

sub vcl_recv {
    # 匹配所有/blog/开头的路由
    if (req.url ~ "^/blog/") {
        set req.backend_hint = blog;
        # pass模式:不生成缓存,走正常请求处理流程,自动保留代理头
        return (pass);
    }
    # 其他路由走默认后端,正常执行缓存逻辑
    set req.backend_hint = default;
}

# 可选配置:双重保障透传路由完全不缓存、不修改响应头
sub vcl_backend_response {
    if (req.url ~ "^/blog/") {
        set beresp.ttl = 0s;
        set beresp.http.Cache-Control = "no-store, no-cache, must-revalidate";
        # 不需要Varnish追加标识头可以取消下面这行注释
        # unset beresp.http.X-Varnish;
    }
}

配置说明

  • pass模式会走Varnish标准请求处理流程,自动保留X-Forwarded-For、X-Real-IP等代理请求头,后端服务可以直接读取这些头获取客户端真实IP,完全无感知。
  • 若有其他需要透传的路由,直接在vcl_recv模块新增匹配规则即可。
  • 配置适配Varnish 4.x及以上版本,若使用3.x版本需要调整对应语法。

内容的提问来源于stack exchange,提问作者Vova Rozhkov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:54:02