今天遇到一个问题,向我的nginx发送post请求总是返回405,后来才知道nginx默认是不响应post请求的
curl -X POST -d "1111111" "" -voa -k
解决方法:让nginx接纳post请求
转载于:
http://blog.chinaunix.net/uid-26438019-id-3298389.html
在实际应用nginx的过程中,可能需要通过post请求静态页面;默认的nginx上,是决绝通过post方式访问静态页面;
在网上查看了一些解决办法,通过重定向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;
}
*/
保存推出;
注意我开始用的是每行首#进行注释,但是make时候报了错,后来改成/* */进行注释就没问题了,真有点怪
在使用之前编译nginx的参数(通过/usr/local/nginx1.7.11/sbin/nginx -V查询),重新编译nginx版本(执行.configure --nginx编译参数,ke),并进行替换(注意不要make install)即可。
阅读(2977) | 评论(0) | 转发(0) |