nginx REST
Maxim Dounin
mdounin на mdounin.ru
Ср Май 23 07:30:28 UTC 2012
Hello!
On Tue, May 22, 2012 at 03:57:37PM -0400, x00xer wrote:
> возникла так же нобходимость сделать
> RESTfull сервис.
> nginx настроен отправлять все запросы к
> PHP в php-fpm сокет:
>
>
> location ~ \.php$ {
> include /etc/nginx/fastcgi_params;
> fastcgi_pass unix:/tmp/php5-fpm.sock;
> fastcgi_param SCRIPT_FILENAME /htdocs$fastcgi_script_name;
> fastcgi_param PATH_INFO $fastcgi_script_name;
> fastcgi_param DOCUMENT_ROOT /htdocs;
> }
>
> если с клиента делаю PUT или DELETE в ответ
> получаю:
>
> спасибо.
> <html>
> <head><title>405 Not Allowed</title></head>
> <body bgcolor="white">
> <center><h1>405 Not Allowed</h1></center>
> <hr><center>nginx</center>
> </body>
> </html>
>
>
> каким образом разрешить данные методы
> в nginx'e ?
Отправить таки на обработку в fastcgi. Для передаваемых на бекенд
запросов nginx разрешает любые методы, кроме TRACE. У вас, судя
по ответу, запрос попадает не на бекенд, а на статический файл.
Что, в общем, логично: если сервис действительно restfull, то
привёдённая выше обработка *.php явно недостаточна, надо делать
как-то так:
location / {
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME /htdocs/index.php;
...
}
Maxim Dounin
Подробная информация о списке рассылки nginx-ru