Mat*_*age 5 http proxy cache varnish
我正在通过 Varnish 运行一些 Rails 应用程序,以提供更好的缓存支持,这有望比 Rails 中的页面缓存选项更灵活。
我偶然发现的一个问题是,当从应用程序服务器返回 HTTP/50x 错误时,varnish 不会提供自定义错误页面(例如,当 Rails 应用程序引发异常时,我们会呈现自定义错误 HTML 模板) - 而不是看到'nice' 用户友好的错误页面,我们看到以下文字:
Error 503 Service Unavailable
Service Unavailable
Guru Meditation:
XID: 828451354
Varnish cache server
Run Code Online (Sandbox Code Playgroud)
有什么方法可以将获取的 HTML 从后端服务器传递给客户端吗?是否与实现 sub_error VCL 方法和使用 fetch 或 pass 指令一样简单?
谢谢。
好吧,我有一个答案 - 令人惊讶的是,问题甚至不是清漆没有传递 HTTP/500 响应内容。
当 Varnish 在连接到后端服务器或等待发送字节时超时时,实际上抛出了 HTTP/503 错误。
基本上,如果与后端的连接成功,但后端没有在一定超时期限内发送第一个字节,或者发送字节之间存在延迟,Varnish 将超时并返回 HTTP/503 错误。
解决方案是更新超时值(当然,修复缓慢的后端服务器),如下所示(详见:http : //varnish-cache.org/wiki/VCL):
backend www {
.host = "www.example.com";
.port = "http";
.connect_timeout = 1s;
.first_byte_timeout = 5s;
.between_bytes_timeout = 2s;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4793 次 |
最近记录: |