说明:
nginx不允许向静态文件提交post方式的请求,否则会返回“HTTP/1.1 405 Method not allowed”错误,至于原来还没去研究。显示如下
[root@gaingreat blort]# curl -d 1=1 www.coolnull.com/blort/1.json405 Not Allowed 405 Not Allowed
nginx
解决:解决方法有三种
一. 重定向405错误码到200
在nginx server{}里面添加以下内容,root为站点的根目录
location ~ (.*\.json) { root /data/web/coolnull.com/www; error_page 405 =200 $1; }
nginx reload下即可
[root@gaingreat blort]# curl -d 1=1 www.coolnull.com/blort/1.json //这样就可以post数据给静态文件了!! 111
二. 转换静态文件接收的POST请求到GET方法去,一种听说不完美但也可以用的方法
upstream static_backend { server localhost:80; } server { listen 80; ... error_page 405 =200 @405; location @405 { root /data/web/coolnull.com/www; proxy_method GET; proxy_pass http://static_backend; } }
三. 修改nginx源码,这个真心没试过!
源码文件位于/nginx源码目录/src/http/modules/ngx_http_static_module.c,找到如下代码:
if (r->method & NGX_HTTP_POST) { return NGX_HTTP_NOT_ALLOWED; }
整段注释掉,然后重新编译 make,不需要make install,把编译生成的nginx文件复制到sbin下的nginx文件,重启nginx即可。
1.json内容是111吗?
对的,因为是测试用的,随便写了个111