Бьюсь черт знает сколько времени. Вроде не раз такую связку настраивал, а теперь что-то не так и непонятно что.
Отдается пустая страница. Причем с кодом 200 если файл есть, и 404 если нет. В Энджиниксе fastcgi_pass задан для локейшена «/». В SCRIPT_FILENAME передается $document_root/test.php. Про прикол переопределения SCRIPT_FILENAME в include fastcgi_params знаю, учел. Файл test.php существует, в нем содержимое «123», на него есть доступ на чтение и выполнение для всех. Fpm уже запускается от имени домашнего пользователя, а не www-data, чтобы уж точно права были.
И у Энджиникс и у fpm включено логирование debug. При этом в логах nginx видно, что запрос на fpm идет. Файл запрашивается тот самый, ошибки в пути нет, проверял ls -l. Все выглядит так, как будто пустой ответ действительно приходит от fpm. В ответе и X-Powered-By есть. Но в логе fpm (/var/log/php5-fpm.log) пусто, последняя строка всегда fpm_event_loop(), line 254: ready to handle connections.
Пробовал глушить fpm, на тот же порт садил Джангу в fastcgi — работает. В Энджиниксе gzip отключил.
У меня сейчас глаза были как у панды в гифке, которая увидела счет.
Перенос внутрь локейшена помог. Но значения параметров же должны наследоваться с верхнего уровня!
Нет, поднимать пробовал, не помогало. На самом деле ответ написан в справке к fastcgi_param: «Директивы наследуются с предыдущего уровня при условии, что на данном уровне не описаны свои директивы fastcgi_param.»
Но там же еще написано: «Ниже приведён пример минимально необходимых параметров для PHP:», но с этим наобором параметров выдается такая-же белая страница.
Пропишите проксирование на tcp-сокет (а не на unix-сокет) и посмотрите сниффером трафик, будете точно знать какой запрос шлет nginx и какой ответ возвращает php:
tcpdump -nAs 20000 -i lo0 tcp port 9000
Ну вот например один запрос: pastie.org/3409160
Только я там ничего не понимаю. Так же не понимаю, что это дает. Fpm не пишет причину, по которой не хочет работать ни в сеть ни в логи.
Затем же, зачем fpm от домашнего пользователя, зачем дебаг логи, зачем файл test.php и все остальные вещи описанные в вопросе — для исключения влияния самых разных факторов.