AMH重新编译Nginx,使其支持静态页面post

在实际使用AMH的过程中,公司出现通过post请求静态页面;默认的nginx上,是拒绝通过post方式访问静态页面的。

网上有2种方法解决这个问题,但是在实际的过程中,发现方法1不奏效,于是使用方法2,重新编译nginx解决问题。

方法1:

修改nginc.conf配置文件,改变“405错误”为“200 ok”,并配置location来解决

1
vi /usr/local/nginx/conf/vhost/domain.com.conf

添加:

1
2
3
4
5
error_page 405 =200 @405;
location @405
{
root /home/wwwroot/web/doamin.com;
}

方法2:

1
2
3
4
5
6
7
8
9
10
11
12
cd /home/amh_install/
wget http://code.amysql.com/files/nginx-1.4.4.tar.gz
tar zxvf nginx-1.4.4.tar.gz
cd nginx-1.4.4/src/http/modules/
vi ngx_http_static_module.c
#将这段屏蔽掉;
/*
if (r->method & NGX_HTTP_POST) {
return NGX_HTTP_NOT_ALLOWED;
}
*/

重新编译:

1
2
./configure –prefix=/usr/local/nginx –user=www –group=www –with-http_ssl_module –with-http_static_module –with-http_gzip_static_module –without-mail_pop3_module –without-mail_imap_module –without-mail_smtp_module –without-http_uwsgi_module –without-http_scgi_module
make

编译完成后不要再执行 make install,不然会把原有的配置文件覆盖,正确的方法是直接删除旧的,把新的复制过去后再执行make upgrade。

1
2
3
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp ./objs/nginx /usr/local/nginx/sbin/
make upgrade

重载一下nginx

1
/etc/init.d/nginx reload