Nginx静态资源POST请求返回405 Not Allowed的解决办法

今天前端同事反应,有个页面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源码不要慌,大胆去试吧!

 

你可能感兴趣的:(linux)