在运行 Varnish Cache 的服务器上调试代码

标签 debugging varnish

考虑在VPS Web服务器上安装Varnish Cache,但想知道如果php代码需要调试可能会导致什么问题。过去,我发现缓存系统使调试更加困难,因为网页的缓存版本不会在代码更改后立即更改。理想情况下,调试必须全部在测试站点上完成,但是有时有必要在生产版本上进行调试。

是否可以在调试时临时关闭单个域或整个服务器的Varnish Cache?

最佳答案

在生产环境上不应进行任何开发或进行很少的开发,但实际上,有时您需要对现场站点中的问题进行故障排除。

Varnish使得查看页面的特定请求失败的原因有些麻烦:它将用自己的“后端提取失败”错误掩盖致命的PHP错误。这使您的PHP代码出现问题的迹象变得不那么明显,并让您立即归咎于Varnish。

您可以通过将所有请求直接传递到已配置的后端来暂时使Varnish通过其缓存。这样,在调试PHP代码方面,它的工作原理完全相同(好像Varnish实际不在其中!)。我的步骤是:

  • 打开您的VCL文件,并在sub vcl_recv {之后立即放置一行return (pipe);
  • 使用service varnish reloadsystemctl reload varnish重新加载您的Varnish配置(取决于您的Linux发行版)。

  • 要返回到缓存(生产设置),请删除该行,然后再次重新加载Varnish。执行这些步骤时,无需停机。

    关于在运行 Varnish Cache 的服务器上调试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48239772/

    相关文章:

    c# - DLL插件调试不起作用

    linux - 请求点击 Varnish 并获得服务而不检查 mod_security 规则?

    Android Studio 从未完成将应用程序上传到 Nexus 10

    web-services - 调试 asmx 网络服务

    varnish - 有没有办法在 Varnish 中为特定请求设置 req.connection_timeout?

    symfony - 父请求和 ESI 子请求之间有任何通信( Varnish 、 session 需求)吗?

    varnish - 如何修复错误503后端提取失败?

    regex - 从 Varnish 中获取 url 值

    debugging - 如何找出 Ruby 中使用 at_exit 方法注册了哪些回调?

    c++ - 使用 GDB 在 Fortran 中调试 MPI 程序