Столкнулся сегодня с сабжевой проблемой, косяк произошел после обновления nginx с 0.7.67 на 1.2.3.
Сайты стали отдаваться с ошибкой 404 и текстом "File not found". Что интересно, не все сайты.. Некоторые работали.
Долго бил во всяческие бубны, поднимал php-cgi на локальном порту вместо php-fpm через сокет, права проверял, конфиги пересмотрел раз 10, включал логи php-fpm, nginx-а. Вырисовывалось, что работают сайты, которые не используют ЧПУ (у них ссылки ведут на реальные скрипты, старые совсем сайтики).
ЧПУ сайтов у меня основано на обработке 404й ошибки и подмене SCRIPT_FILENAME на конкретный файл MVC-контроллера.
В итоге собака была зарыта в include fastcgi_params;
Раньше эта строка стояла под определением SCRIPT_FILENAME, и как то это работало, несмотря на то, что include fastcgi_params шло ниже и по идее должно было переопределять SCRIPT_FILENAME. После обновления же nginx видимо поменялось поведение.
Была мысль, что обновленный nginx и файл fastcgi_params обновил, однако время изменения файла было далеко в прошлом.
В общем проблема решилась установлением строки include fastcgi_params; на первое место во всех секциях по обработке php.
Не помогло -(
ОтветитьУдалитьserver {
server_name xxxxx.by;
root /home/maximus/www/xxxxx.by;
index index.php index.html index.htm;
location ~ ^(.+\.php)$ {
try_files $uri =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
Спасибо, помогло.
ОтветитьУдалить