Ошибка Nginx FastCGI sent in stderr "Primary script unknown"

Thank you for reading this post, don't forget to subscribe!

Ошиб­ка FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream в Nginx воз­ни­ка­ет при исполь­зо­ва­нии моду­ля php-fpm.

Она гово­рит о том, что веб-сер­вер не может най­ти ука­зан­ный в фай­ле кон­фи­гу­ра­ции nginx.conf скрипт:

[codesyntax lang="php"]

[/codesyntax]

$document_root гово­рит о том, что скрипт лежит в кор­не­вом каталоге

Глав­ная реко­мен­да­ция — про­верь­те все пути и убе­ди­тесь, что все нуж­ные фай­лы суще­ству­ют и лежат на сво­их местах.

Если вы не може­те разо­брать­ся, в каком ката­ло­ге Nginx ищет нуж­ный скрипт, то помо­жет консоль:

fastcgi_pass по умол­ча­нию уста­нов­лен на 9000 порт

Вывод пока­жет всю нуж­ную инфор­ма­цию, в том чис­ле путь к скрипту.

Защита файлов

Учти­те, что нуж­но допол­ни­тель­но настро­ить веб-сер­вер, что­бы он мог выдер­жать ата­ки зло­умыш­лен­ни­ков и огром­ное коли­че­ство запро­сов к несу­ще­ству­ю­щим фай­лам, кото­рые сами по себе спо­соб­ны поло­жить сайт.

Для нача­ла мож­но забло­ки­ро­вать доступ к фай­лам, кото­рых не суще­ству­ет, но к кото­рым может быть повы­шен­ный интерес:

[codesyntax lang="php"]

[/codesyntax]

Запре­ща­ет доступ к фай­лу admin.php

Но в Nginx есть и более изящ­ный спо­соб защи­ты от запро­сов к несу­ще­ству­ю­щим файлам:

[codesyntax lang="php"]

[/codesyntax]

Если запра­ши­ва­е­мо­го фай­ла задан­но­го фор­ма­та не суще­ству­ет, то выво­дит стра­ни­цу 404

А для защи­ты от флу­да мож­но исполь­зо­вать дирек­ти­ву limit_req:

[codesyntax lang="php"]

[/codesyntax]

Дирек­тив limit_req может быть несколько

Limit_req так­же мож­но раз­ме­щать в сек­ци­ях http и server:

[codesyntax lang="php"]

[/codesyntax]

Огра­ни­чи­ва­ет коли­че­ство под­клю­че­ний с одно­го ip и коли­че­ство запро­сов в секунду

При исполь­зо­ва­нии моду­ля FastCGI мож­но огра­ни­чить доступ к фай­лам из интер­не­та, воз­вра­щая стра­ни­цу ошиб­ки при запросе:

[codesyntax lang="php"]

[/codesyntax]

Все ошиб­ки пере­на­прав­ля­ют­ся на error_page