Как получить переданные данные методами PUT/DELETE через nginx?
Пытаюсь построить REST через обычные PHP и Nginx... Но ничего не выходит, ибо заголовки PUT/DELETE вызывают у оных шок...
Методы PUT/DELETE относятся к WebDAV, как утверждает Nginx, но я хочу использовать их в php сценариях так же, как и GET, POST дабы иметь полный CRUD набор для REST'а.
Первая попытка состояла в обычной отправке, например, put запроса.
Провалилась с http-кодом 405 not allowed.
Вторая попытка состояла в добавлении dav_methods PUT DELETE;
В .conf файл nginx'а в секцию server {}.
Провалилась с кодом 409 conflict.
Скорее всего проблема на стороне nginx'а (php не шлёт своих заголовков в пакеты, т.е. возможно, до него не доходит дело), но где копать?
nginx по-умолчанию пропускает все типы запросов. Что у вас за ним стоит? Apache или php-fpm?
И гляньте заголовки ответа, в частности Server, если отлуп идет непосредственно с nginx, там будет стоять nginx.
@AMar4enko все правильно говорит, nginx пропускает все типы корректных запросов ( forum.nginx.org/read.php?21,220827,220827#msg-220827 ). То, что в заголовках мы не видим признаков бэкенда вовсе не значит, что запрос на него не ушел. Скрыть заголовки бэкэнда достаточно просто. Единственный случай когда nginx может взять на себя обработку запроса - WebDAV. Поэтому для начала смотрим, собран ли он с его поддержкой: $ nginx -V
Тогда не подскажу. web dav не юзаю, nginx всегда ставил самосбором. По идее должно было работать. Как вариант могу предложить пересобрать nginx без web_dav. Хотя для начала стоило бы посмотреть вывод strace и убедиться, что это nginx так отвечает, а не бэкэнд.