Varnish 302重定向到后端

标签 varnish

我有在IP Foo上以IP Bar作为默认后端运行的Varnish。我在Foo上访问Varnish,在Bar上的Apache返回302,而不是从Foo收到响应,浏览器被重定向到Bar,从而完全丢失了Varnish。

我在这里误解了Varnish的基本概念吗?我已经在与Apache相同的服务器上使用完全相同的VCL运行Varnish,并且效果很好。

在此先感谢您的帮助/提示/指针:-)

最佳答案

您正在从后端获得重定向(302)。重定向必须是绝对的,并且您的后端选择使用它自己的ip/hostname作为url。

您可以通过多种方式解决此问题:

  • 在后端使用相同的虚拟主机(例如foo.com,它的IP指向您的 Varnish ,但在后端被视为虚拟主机)。您的后端必须足够聪明,才能使用它进行重定向。
  • 将原始ip地址作为自定义HTTP请求 header 转发到后端(例如,参见https://serverfault.com/questions/340500/varnish-forward-client-ip-address-to-backend)。您的后端必须足够聪明,才能使用它进行重定向。
  • 用 Varnish 重写302个答案(用foo.com替换Location header 中的bar.com部分)
  • 关于 Varnish 302重定向到后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9796715/

    相关文章:

    nginx - Vagrant + Puppets 模块

    php - Varnish 缓存+ PHP

    wordpress - varnish nginx wordpress ssl 几个域

    angular - 在Varnish代理后面的Angular 5.6.0中设置文档根目录

    http-headers - Varnish :如何使用 `std.ip()` 设置标题值

    Varnish :如果响应为404,则重写URL

    Varnish 前端服务器,Litespeed 后端服务器

    Varnish 和http头

    Varnish 4 Basic Authentication 不断提示输入用户名和密码

    http - 如果 Varnish 从主服务器收到 404 请求,是否可以将 Varnish 配置为尝试使用第二台服务器获取某些资源?