今天前端同事反应,有个页面post请求返回405状态,get请求则返回数据。
原因是Nginx等绝大多数web服务器,都不允许静态文件响应POST请求。
查看了好多博客,3种解决办法中只有最后一种有效,记录一下。
编译安装的nginx源码目录下,src/http/modules/ngx_http_static_module.c中,将以下代码注释
/*
if (r->method & NGX_HTTP_POST) {
return NGX_HTTP_NOT_ALLOWED;
}
*/
然后通过nginx -V 找出原来的编译参数,重新编译就好。编译完成后make,不用执行make install.
直接重命名/usr/local/nginx/sbin/nginx为/usr/local/nginx/sbin/nginx.old
cp objs/nginx /usr/local/nginx/sbin/nginx
kill -USR2 `cat /usr/local/webserver/nginx/nginx.pid` 更新配置文件
kill -QUIT `cat /usr/local/webserver/nginx/nginx.pid.oldbin` 优雅的关闭
完美解决了。
听到要改nginx源码不要慌,大胆去试吧!