Ошибка Nginx 405 Not Allowed

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

Nginx выда­ет ошиб­ку 405 Not Allowed, если для досту­па к фай­лам исполь­зу­ет­ся запре­щен­ный или непод­дер­жи­ва­е­мый метод. В боль­шин­стве слу­ча­ев это POST, кото­рый в Nginx запре­щен для досту­па к ста­ти­че­ским файлам.

Для реше­ния про­бле­мы мож­но исполь­зо­вать один из двух подходов.

Обход ограничения

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

[codesyntax lang="php"]

[/codesyntax]

Пере­да­ет ошиб­ку 405 как код 200 на нуж­ный адрес

А если Nginx рабо­та­ет как прок­си, ска­жем, для Apache, то мож­но схит­рить так:

[codesyntax lang="php"]

[/codesyntax]

Пере­на­прав­ля­ет запрос на proxy

Когда используется FastCGI

Если в Nginx исполь­зу­ет­ся модуль FastCGI, то в неко­то­рых слу­ча­ях веб-сер­вер может некор­рект­но вос­при­ни­мать скрип­ты, кото­рые вызы­ва­ют­ся мето­дом POST. Для это­го запра­ши­ва­е­мый URL раз­би­ва­ет­ся на адрес само­го скрип­та и запра­ши­ва­е­мых параметров:

[codesyntax lang="php"]

[/codesyntax]

Дирек­ти­ва fastcgi_split_path_info опре­де­ля­ет фор­мат скрип­та и пара­мет­ры разделения