NginX-Varnish-PHP-FPM Páginas em branco

3

Eu quero colocar o nginx na frente do Varnish, que ao mesmo tempo vai voltar ao nginx para servir algum PHP (Drupal).

Mas eu estou recebendo apenas páginas em branco (do verniz) com 200 de resposta, mas comprimento 0. Somente o primeiro acesso após o reinício do verniz funciona, mas deixa páginas em branco o tempo todo.

Esta é a configuração do Nginx:

server{
  listen 80; 
  server_name myserver

  access_log  /var/log/nginx/ssl_access.log main;
  error_log   /var/log/nginx/ssl_error.log warn;

  location / { 
    proxy_pass http://127.0.0.1:6081;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_redirect off;
  } 

Em seguida, a configuração do verniz é apenas o padrão, tentando depurar:

backend default {
  .host = "127.0.0.1";
  .port = "8080";
}

E, novamente, a configuração do nginx para 8080 é:

server{
  listen       8080; 
  access_log  /var/log/nginx/fromvarnish.log main;
  error_log   /var/log/nginx/fromvarnisherror.log warn;

  server_name myserver

  location / { 
    try_files $uri /index.php?$query_string; 
  }
  location ~ '\.php$|^/update.php' {
     include fastcgi_params;
     fastcgi_pass 127.0.0.1:9001;
     fastcgi_index index.php;
  }
}

Visitar minha página da Web retorna apenas html vazio, mas 200 respostas. Nenhum erro de PHP ou qualquer coisa. Os logs de acesso no Nginx são apenas acesso, sem erros.

Se eu acessar diretamente do Varnish (ou eu acesso via port mywbpage.com:6081) ou se eu configurá-lo para a porta 80 ele funciona.

Se eu definir o php executando backend para Apache + php-fpm (ao invés de Nginx: nginx- > verniz- > apache) ele também funciona corretamente (eu tenho o mesmo problema embora se o executor do php for HHVM mas que pode ser um problema diferente).

EDIT: desculpe que estava errado, se eu usar o apache ele funciona apenas se eu desmarcar o cache padrão do drupal (páginas de cache para usuários não autenticados). Com o nginx isso não importa, ele nunca funciona, independentemente desta opção.

Algum de vocês sabe alguma coisa que possa me guiar?

    
por Cesc 25.12.2015 / 10:05

1 resposta

3

Então, espero que alguém dê uma resposta, mas enquanto isso eu trabalhei, vou explicar como:

configuração nginx na porta 80 da parte do servidor. Aquela que o usuário acessará primeiro, adicione isto:

proxy_http_version 1.1;

Olhando para os logs de verniz, uma das pequenas diferenças entre um pedido vindo do nginx - página em branco -:

ReqProtocol HTTP/1.0

e um vindo diretamente do web browser que visitava o porto de verniz (ex: mypage: 6081) - trabalhando corretamente - foi o seguinte:

ReqProtocol HTTP/1.1

Então eu forcei o nginx a usar o 1.1 e agora ele funciona.

    
por 04.01.2016 / 07:22