尝试将代理HTTP CRUD请求的nginx配置为fastcgi
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;
}
}
Run Code Online (Sandbox Code Playgroud)
在PHP方面,我有phalcon php-framework.Witch可以很好地处理简单的GET/POST请求.框架中的路由器可以处理PUT,DELETE方法.但是当我尝试制作简单的PUT方法时,请求nginx返回409上面的配置冲突错误.
我找不到任何关于该案例的建议以及如何从nginx将web_dav方法传递给php.
谢谢.
这个答案是在普通的nginx WebDav的上下文中,但也可能对你的PHP情况有用.我发现,如果您尝试指定目标父文件夹而不是包含文件名的完整目标,您将获得409.例:
建立:
$ echo "test" >> ~/test.txt
$ cat ~/test.txt
test
Run Code Online (Sandbox Code Playgroud)
测试不好:
$ curl -X PUT -d `cat ~/test.txt` http://localhost:8080/
<html>
<head><title>409 Conflict</title></head>
<body bgcolor="white">
<center><h1>409 Conflict</h1></center>
<hr><center>nginx/1.5.0</center>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
好测试:
$ curl -X PUT -d `cat ~/test.txt` http://localhost:8080/test.txt
$ curl -X GET http://localhost:8080/test.txt
test
$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3567 次 |
| 最近记录: |