网站首页文章详情

Nginx的405 not allowed错误解决【Nginx静态文件响应POST请求,提示405错误问题】

发布时间:2018-03-24 15:56编辑:胜男

1、首先看下出现405的提示信息

<html>  
<head><title>405 Not Allowed</title></head>  
<body bgcolor="white">  
<center><h1>405 Not Allowed</h1></center>  
<hr><center>nginx/1.8.1</center>  
</body>  
</html>
这是由于nginx安装的时候默认静态文件禁止使用POST方式请求,出现的禁止访问信息

2、有以下三种解决方法

1)将405错误指向成功

静态server下的location加入error_page 405 =200 $uri;

location ~ ^/better/.*.(htm|html|gif|jpg|jpeg|png|ico|rar|css|js|zip|txt|flv|swf|doc|ppt|xls|pdf|json|ico|htc)$ {  
<span style="white-space:pre">    </span>root D:/code/BetterjrWeb;  
<span style="white-space:pre">    </span>error_page 405 =200 $uri;  
}  
2)修改nginx下src/http/modules/ngx_http_static_module.c文件

if (r->method & NGX_HTTP_POST) {  
     return NGX_HTTP_NOT_ALLOWED;  
}
这一段注释掉,重新编译,不要make install编译生成的nginx文件复制到sbin下  重启nginx

3)修改错误界面指向(网上多流传这种方式,但是没有改变请求方法,所以行不通,所以采用以下方法)【我使用的这种方式解决的】

upstream static_backend {  
    server localhost:80;  
}  
  
server {  
    listen 80;  
    # ...  
    error_page 405 =200 @405;  
    location @405 {  
        root /srv/http;  
        proxy_method GET;  
        proxy_pass http://static_backend;  
    }  
}