Php5-fpm и nginx — ни в какую не хочет работать?

Бьюсь черт знает сколько времени. Вроде не раз такую связку настраивал, а теперь что-то не так и непонятно что.



Отдается пустая страница. Причем с кодом 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 отключил.
  • Вопрос задан
  • 5545 просмотров
Решения вопроса 1
ertaquo
@ertaquo
Может, вам попробовать так?
server {
listen 192.168.56.100:80;

server_name .flat.ubuntu;

root /home/homm/www/project_dev/www;

location / {
include fastcgi_params;

fastcgi_pass 127.0.0.1:9030;
fastcgi_param SCRIPT_FILENAME $document_root/test.php;
}
}

Или, если не поможет, попробовать добавить эту строчку в fastcgi_params:
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@zuborg
Пропишите проксирование на tcp-сокет (а не на unix-сокет) и посмотрите сниффером трафик, будете точно знать какой запрос шлет nginx и какой ответ возвращает php:
tcpdump -nAs 20000 -i lo0 tcp port 9000
Ответ написан
mastini
@mastini
зачем вообще в / fastcgi?
выносите отдельным локейшеном.

location ~ .php$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass backend;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы