Я врезался в стену, пока настраивал сайт с помощью nginx / fpm. На странице отображается «Файл не найден», и это появляется в nginx error.log:
FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream
Я новичок в nginx и fpm, и это сообщение об ошибке ничего не значит для меня (даже машина Google не помогла!). Может ли кто-нибудь пролить свет на то, что может происходить?
SCRIPT_FILENAME
.Ответы:
У вас должен быть
location
раздел для обработки запросов PHP, настроенный так:(Дополнительное
try_files
исправляет уязвимость безопасности, которая могла позволить произвольным файлам быть выполненными как PHP.)Кроме того, вы
root
должны быть определены вserver
разделе файла конфигурации, а не вlocation
разделе. Это одна из самых распространенных ошибок конфигурации nginx .источник
Это примечание для пассажирских установок.
Я только что установил nginx из источника через пассажира, что вызвало проблему с php5-fpm. По умолчанию nginx.conf использует проблему, описанную Майклом Хэмптоном. Решением является удаление блока вокруг директив root и index, поэтому:
будет выглядеть так:
Кроме того, блок php неправильно настроен. См. Майкл Хэмптонс ответ для правильного пути к нему.
Дополнительным примечанием может быть то, что если php5-fpm настроен на использование сокетов, укажите параметр fastcgi_pass в блоке php в nginx.conf на настройку сокета в /etc/php5/fpm/pool.d/www.conf.
источник
Просто у меня была эта проблема в новой версии nginx. (конфиг взят из старой версии)
То, что я должен был сделать, было поместить
include fastcgi_params;
вышеупомянутый мой обычайSCRIPT_FILENAME
как это:Как
SCRIPT_FILENAME
то переписывался.источник
Если вы используете псевдонимы в своих блоках местоположения, эта ошибка также может проявляться в необработанной ошибке 404. Это можно увидеть, если страница, отображаемая в браузере, представляет собой простой текст «Файл не найден», в отличие от более форматированной (центрированной) страницы nginx 404. По сути, это действительно говорит, что страница 404 не может быть найдена.
Чтобы решить
try_files $uri =404
эту проблему, добавьте дополнительную строку в свой блок местоположения и перезагрузите конфигурацию nginx. В дополнение к тому, что сказал Майкл Хэмптон о решении конкретной уязвимости безопасности , это также позволяет обработчику fastcgi переопределить определение псевдонима и найти скрипт 404 в расположении по умолчанию.источник
о строке 149, измените php user && user group
Я проверяю это успешно сейчас.
источник
Я видел :
на сервере я помещен под высокой нагрузкой при стресс-тестировании. Мое подозрение, которое еще предстоит подтвердить, заключается в том, что доступные файловые дескрипторы из ОС были исчерпаны. В этом случае php-fpm не может получить ссылку на файл.
Я понимаю, что это умозрительно, но, безусловно, соответствует моему сценарию и может также помочь кому-то еще.
источник
источник