Este relatório de bug parece sugerir uma solução para o seu problema; você deveria tentar.
Cortando uma longa história, conseguimos obter um erro mais preciso do Varnishlog.
O Varnishlog nos diz que estamos enviando um
31 TxRequest - POST
31 TxHeader - Content-Type: application/x-www-form-urlencoded
mas estamos chegando
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
Ainda não sabemos exatamente o que é isso, mas aparentemente o Content-Type: application / x-www-form-urlencoded não está conseguindo como deveria. Ajuda ainda necessária, por favor!
Mensagem original abaixo.
O título era "O verniz não permite que os usuários do Joomla façam login - 503 guru meditation error", mas eu mudei para obter mais atenção para o problema e não para os sintomas.
Olá,
Temos um site de produção para um jornal local que atualmente está atrás de um proxy reverso do Apache, basicamente o site em um servidor e o outro sendo reservado apenas como proxy reverso (bem, há mais, mas isso não tem relevância aqui) . O Apache como um proxy reverso funciona, mas pode ser mais rápido.
Queremos mudar o proxy reverso para usar o Varnish em vez do Apache em um servidor Ubuntu 10.4. O Varnish é a versão 2.10 instalada diretamente dos repositórios do Ubuntu. O Ubuntu 10.4 usa o PHP 5.3.2.
Para surfistas anônimos, o site funciona maravilhosamente com o Varnish. Até agora podemos obter muito boa velocidade de verniz, só temos alguns problemas com o login ou a saída.
O grande problema é que os usuários não podem efetuar login: eles recebem uma página de erro 503 do Varnish todas as vezes. Os logs não revelam a causa. Parece que o pedido nunca sairia do verniz. Então, estamos apenas adivinhando - não um ponto de partida strong.
Passamos pelo que foi sugerido em várias partes da web. Aumentamos os tempos limite para
backend xxx {
.host = "xxx.xx";
.port = "http";
.connect_timeout = 60s;
.first_byte_timeout = 60s;
.between_bytes_timeout = 60s;
}
mas parece que temos a página de erro do 503 guru muito mais rápida do que isso, como em aprox. 5 segundos.
Aumentamos o tamanho dos cabeçalhos Varnish para 128 no daemon.
Em vcl_recv temos
if (req.http.Authenticate || req.http.Authorization) {
return(pass);
}
e em vcl_fetch
## auhtentication handling
if (req.http.Authenticate || req.http.Authorization) {
return(pass);
}
Não tiramos cookies.
Tentamos garantir que as páginas de erro não sejam armazenadas em cache. Como dito acima, não podemos ver nada nos logs de back-end do Apache, aparentemente nunca é solicitado a autenticação do usuário do Joomla.
O verniz não parece ter muita menção com conexão ao Joomla. (Não podemos abandonar o Joomla, essa seleção foi feita e nós apenas temos que viver com o que nos foi dado) Alguém tem uma combinação de trabalho Varnish - Joomla?
Obrigado pela leitura. Por favor ajude. Precisamos de algumas dicas - desesperadamente. Alguma sugestão?
ompap
Este relatório de bug parece sugerir uma solução para o seu problema; você deveria tentar.
if (req.http.Authenticate || req.http.Authorization) {
pass;
}
A última vez que trabalhei com o Varnish, você não usou return(pass);
, apenas pass;
Não sei se isso causará erros, ou provavelmente, fará com que o verniz ignore esses bits de sintaxe.
A razão para fazer isso é porque pass;
faz com que o mecanismo de verniz mude diretamente para o modo de aprovação, que então passa o material diretamente do backend para o cliente.
A sério. Eu estou começando a pensar mais e mais que essas declarações return
estão apenas bagunçando tudo.
edit2: Acabei de reler os documentos da VCL e não consegui encontrar nada sobre uma palavra-chave return
.