Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2751988
  • 博文数量: 587
  • 博客积分: 6356
  • 博客等级: 准将
  • 技术积分: 6410
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-23 10:54
个人简介

器量大者,福泽必厚

文章分类

全部博文(587)

文章存档

2019年(3)

2018年(1)

2017年(29)

2016年(39)

2015年(66)

2014年(117)

2013年(136)

2012年(58)

2011年(34)

2010年(50)

2009年(38)

2008年(16)

分类: LINUX

2017-03-02 14:46:26

在实际应用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;
}
*/


保存推出;
整段注释掉,在使用之前编译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 来解决,但是这种方式有时候有问题(有失败的概率)

阅读(3391) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~