NginX->Varnish->PHP-FPM Пустые страницы

Я хочу поставить nginx перед Varnish, который в то же время вернется к nginx для обслуживания некоторого PHP (Drupal).

Но я получаю только пустые страницы (от Varnish) с 200 ответами, но длиной 0. Работает только первый доступ после перезапуска лака, но потом все время пустые страницы.

Это конфигурация для 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;
  } 

Тогда конфигурация лака только по умолчанию, пытаясь отладить:

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

И снова конфиг nginx для 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;
  }
}

Посещение моей веб-страницы возвращает только пустой HTML, но 200 ответ. Нет ошибки PHP или что-нибудь. Журналы доступа на Nginx - это просто доступ, без ошибок.

Если я получаю доступ напрямую из Varnish (или я получаю доступ через порт mywbpage.com:6081), или если я устанавливаю его на порт 80, он работает.

Если я устанавливаю PHP-исполняющий бэкэнд в Apache + php-fpm (вместо Nginx: nginx->varnish->apache), он также работает правильно (у меня та же проблема, хотя, если php-исполнитель HHVM, но это может быть другой проблемой)).

РЕДАКТИРОВАТЬ: извините, что было неправильно, если я использую Apache, он работает, только если я сниму флажок кеш по умолчанию Drupal (кеш страниц для неаутентифицированных пользователей). С nginx это не имеет значения, оно никогда не работает независимо от этого флажка.

Кто-нибудь из вас знает что-то, что может направить меня?

1 ответ

Решение

Поэтому я надеюсь, что кто-то даст ответ, но пока я заставил его работать, поэтому я объясню, как:

Конфигурация nginx в порту 80 серверной части. Тот, к которому пользователь будет обращаться первым, добавьте это:

proxy_http_version 1.1;

Если взглянуть на журналы лака, одно из небольших различий между запросами, поступающими с nginx -blank page-:

ReqProtocol HTTP/1.0

и один, пришедший прямо из веб-браузера, посетивший порт для лака (например, mypage:6081), - работающий должным образом - был:

ReqProtocol HTTP/1.1

Поэтому я заставил nginx использовать 1.1, и теперь он работает.

Другие вопросы по тегам