尝试为对 fastcgi 的代理 HTTP CRUD 请求配置 nginx
nginx配置:
server {
listen 80;
server_name api.example.dev;
dav_methods PUT DELETE;
dav_access group:rw all:r;
create_full_put_path on;
index index_dev.php;
set $root_path '/var/www/api/public';
root $root_path;
try_files $uri $uri/ @rewrite;
location @rewrite {
rewrite ^/(.*)$ /index_dev.php?_url=/$1;
}
location ~ \.php {
fastcgi_pass unix:/var/run/php-fpm.api.sock;
fastcgi_index /index_dev.php;
include /etc/nginx/fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HOST $host;
fastcgi_param DESTINATION $http_destination;
fastcgi_param OVERWRITE $http_overwrite;
fastcgi_param APPLICATION_ENV dev;
}
}
在 PHP 方面,我有 phalcon php 框架。Witch 可以很好地处理简单的 GET/POST 请求。框架中的路由器可以处理 PUT、DELETE 方法。但是当我尝试使用上面的配置进行简单的 PUT 方法请求时,nginx 会返回 409 冲突错误。
对于这种情况以及如何将 web_dav 方法从 nginx 传递给 php,我找不到任何建议。
谢谢。