放入nginx的静态文件

我想弄清楚如何让PUT到Nginx中的静态文件,放置请求将被代理到一个PHP脚本。 我正在尝试使用curl来处理请求的一个示例是:

curl -X PUT -d "tags=abc,def" cp.local/api/Image/myimage.jpg 

这会在nginx中抛出405 Not Allowed。 其他url的工作,例如:

 curl -X PUT -d "tags=abc,def" cp.local/api/Image/myimage.pdf 

我读了一个论坛post ,其中有人有类似的问题,但与POST,但它已经过时,似乎没有一个真正的修复线程。

相关的nginxconfiguration指令是:

 location ~* ^/api/.*$ { root /my/path/public; fastcgi_param SCRIPT_FILENAME /my/path/public/Api.php; fastcgi_pass 127.0.0.1:9000; include fastcgi_params; } 

除了获取一个静态文件,你什么也做不了。 如果你想POST,PUT,DELETE等,你需要确保你有一个位置块处理的URI,这个位置块处理请求的方式,允许这样的请求。

例如通过proxy_passing到Apache或fastcgi_passing到PHP。

用你提供的configuration,理论上应该允许。 但是你删除了很多信息,很可能你有一个位置块来捕捉静态文件。 当你处理正则expression式的位置时,将会使用第一个匹配的位置,所以你需要确保你的API位置是在任何其他匹配位置之前定义的。

拦截HTTP状态405并用脚本处理请求:

 error_page 405 = /api/Api.php;