1. 程式人生 > >Nginx的405 not allowed錯誤解決

Nginx的405 not allowed錯誤解決

【原文:https://blog.csdn.net/a346673164/article/details/52932587

1.首先看到的頁面是nginx返回的頁面,得知錯誤要從nginx上來解決
返回頁面:

<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx/1.0.11</center>
</body>
</html>


2.上網查資料,原來因為這裡請求的靜態檔案採用的是post方法,nginx是不允許post訪問靜態資源。題話外,試著post訪問了下www.baidu.com發現頁面也是報錯

3.現貼出三種解決方式
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;
    }
}
--------------------- 
作者:a346673164 
來源:CSDN 
原文:https://blog.csdn.net/a346673164/article/details/52932587 
版權宣告:本文為博主原創文章,轉載請附上博文連結!