在网上查看了一些解决办法,通过重定向error_page 来达到目的;在实际运用中,有时无法生效;
下面告诉一个终极的解决办法:
修改源码;
本文环境:
nginx: 1.2.2
tar zxvf nginx-1.2.2.tar.gz
cd ./nginx-1.2.2/src/http/modules/
vim ngx_http_static_module.c
找到如下行(大约在文件的第206行):
if (r->method & NGX_HTTP_POST) {
return NGX_HTTP_NOT_ALLOWED;
}
将这段屏蔽掉;
/*
if (r->method & NGX_HTTP_POST) {
return NGX_HTTP_NOT_ALLOWED;
}
*/
保存推出;
整段注释掉,在使用之前编译nginx的参数,然后重新编译 make ,不要 make install,然后把编译生成的 nginx 文件复制到 sbin 下的 nginx 文件,重启 nginx 即可
其实还有另外一种方式:

# To allow POST on static pages
error_page 405 =200 $uri; ###重定向 405 错误码到 200
方案三:说服开发不要对静态文件使用 post 方法
对静态文件使用 POST 方法是无意义的,更改成 GET 方法请求静态文件。
###这种有局限性,如果是已经成型的接口或者是第三方的就只能采用方案1或方案2了!
###通过配置error_page 来解决,但是这种方式有时候有问题(有失败的概率)
