长话短说,我们已经设法从Varnishlog得到一个更精确的错误。
Varnishlog告诉我们,我们正在发送一个
31 TxRequest - POST 31 TxHeader - Content-Type: application/x-www-form-urlencoded
但是我们正在得到
9 FetchError c backend write error: 11 31 BackendClose - [backend name] 9 VCL_call c error 9 VCL_return c deliver 9 Length c 488 9 VCL_call c deliver 9 VCL_return c deliver 9 TxProtocol c HTTP/1.1 9 TxStatus c 503
我们仍然不知道这是什么,但显然内容types:应用程序/ x-www-form-urlencoded没有得到通过,因为它应该。 帮助仍然需要,请!
下面的原始信息。
标题是“Varnish不让Joomla用户login – 503大师冥想错误”,但我改变了它,以获得更多关注的问题,而不是症状。
你好,
我们有一个当地报纸的制作网站,目前它背后是一个Apache反向代理,基本上这个网站在一台服务器上,另一个只作为反向代理(好吧,还有更多,但是这里没有关系)。 Apache作为反向代理工作,但可能会更快。
我们想在Ubuntu 10.4服务器上将反向代理改为使用Varnish而不是Apache。 Varnish是从Ubuntu回购站直接安装的版本2.10。 Ubuntu 10.4使用PHP 5.3.2。
对于匿名冲浪者来说,这个网站和Varnish完美搭配。 到目前为止,我们可以从Varnish中获得非常好的速度,我们在login或退出时只有一些问题。
最大的问题是,用户无法login:他们每次都会得到一个Varnish 503错误页面。 日志不显示原因。 感觉好像这个要求永远不会留下光油。 所以我们只是猜测 – 不是一个强有力的出发点。
我们已经完成了networking上各种各样的build议。 我们增加了超时
backend xxx { .host = "xxx.xx"; .port = "http"; .connect_timeout = 60s; .first_byte_timeout = 60s; .between_bytes_timeout = 60s; }
但我们似乎得到了503大师的错误页面比这更快,如约。 5秒。
守护进程中,我们已将Varnish标头大小增加到128。
在vcl_recv中,我们有
if (req.http.Authenticate || req.http.Authorization) { return(pass); }
并在vcl_fetch
## auhtentication handling if (req.http.Authenticate || req.http.Authorization) { return(pass); }
我们不去除cookies。
我们试图确保错误页面不被caching。 如上所述,我们在后台Apache日志中看不到任何东西,显然它永远不会被要求提供Joomla用户authentication。
关于Joomla的连接,Varnish似乎没有太多提及。 (我们不能转储Joomla,select已经完成,我们只能忍受我们已经给的)有没有人有工作光油 – Joomla组合?
谢谢阅读。 请帮忙。 我们需要一些提示 – 绝望地。 有什么build议么?
ompap
这个错误报告似乎build议解决您的问题; 你应该试试看。
if (req.http.Authenticate || req.http.Authorization) { pass; }
上次我和Varnish一起工作时,你没有使用return(pass); ,只是pass; 不知道是否会导致错误,或者可能导致清漆忽略这些语法的位。
这样做的原因是因为pass; 使清漆引擎直接切换到通过模式,然后直接从后端提交给客户端。
认真。 我开始越来越多地认为那些return声明只是在喋喋不休。
编辑2:我只是重新阅读VCL文档,并找不到任何关于return关键字。