环境:nginx 1.0.10
今天调试一个站点时,发现用post方式去请求一个静态页面时,返回 HTTP/1.1 405 Method not allowed 状态,无法正常显示页面。
这里提供下网上的一些解决方法,供大家参考。
方法一
复制代码 代码如下:
server
{
listen 80;
server_name test.baidu.com;
index index.html index.htm index.php;
root /www/test.baidu.com;
error_page 405 =200 @405;
location @405
{
root /www/test.baidu.com;
}
location ~ .*.php?$
{
include conf/fcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
}
备注:用在我的环境无法解决。
方法二
编辑nginx源代码
vi /root/soft/nginx1.0.10/src/http/modules/ngx_http_static_module.c
复制代码 代码如下:
注释掉原有的一段话
/*
if (r->method & NGX_HTTP_POST) {
return NGX_HTTP_NOT_ALLOWED;
}
*/
然后按照原来的编译参数 ./configuer make 不用make install 否则会覆盖原来的一些配置文件。
执行
复制代码 代码如下:
cp $nginx_dir/sbin/nginx $nginx_dir/sbin/nginx.bak
cp ./objs/nginx $nginx_dir/sbin/nginx
$nginx_dir/sbin/nginx -s reload
备注:用在我的环境无法解决。
方法三
复制代码 代码如下:
server
{
listen 80;
server_name test.baidu.com;
index index.html index.htm index.php;
root /www/test.baidu.com;
location /
{
root /www/test.baidu.com;
error_page 405 =200 http://$host$request_uri;
}
location ~ .*.php?$
{
include conf/fcgi.conf;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
}
备注:用在我的环境可以解决。