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, и теперь он работает.