【nginx】405が許可されない問題の解決策

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 が静的リソースにアクセスすることを許可しません。話は逸れますが、投稿しようとして www.baidu.com にアクセスしたところ、ページでもエラーが報告されていることがわかりました。get メソッドを使用してアクセスしてみてください。

3. ソリューション(3種類)

(1) 405エラーを成功に導く(この方法で解決した問題)

error_page 405 =200 $uri を静的サーバーの下の場所に追加します。

location / {
    
    
        root /usr/share/nginx/html/cashier;
        try_files $uri $uri/ /index.html;
        index index.html index.htm;
        error_page 405 =200  $request_uri; // $request_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;  // 注意 405后面是要接空格的,而不是因为打错了字符
    location @405 {
    
    
        root /srv/http;
        proxy_method GET;
        proxy_pass http://static_backend;
    }
}
(4) 詳細説明

405 メソッドが許可されていません は、サーバーが指定された要求 HTTP メソッドを受信して​​認識したが、サーバーがリソースを要求する特定のメソッドを拒否したことを示す HTTP 応答ステータス コードです。このコード応答は、要求されたリソースが有効で存在するが、クライアントが要求中に受け入れられない HTTP メソッドを使用したことを確認します。

4. Nginx$request_uri$uri詳しい説明

$uri

nginx に記録されるのは$uri、一連の内部リダイレクト操作を実行した後、最終的にバックエンド サーバーに渡される URL です。

要求されたファイル名とパスが含まれますが、“?”或“#”他のパラメータは含まれません。

完全な URL リンク: http://www.alipay.com/alipay/index.html
$uri:/alipay/index.html

$request_uri

$request_uri記録されるのは現在のリクエストの元のURL(パラメータを含む)であり、内部リダイレクトが行われていない場合はrequest_uriパラメータを除いた値uriと同じになります。オンライン環境におけるトラブルシューティングの問題は、バックエンド サーバーで確認されたリクエストがrequest_uriNginx に保存されているリクエストと一致しない場合、uriそこで検索することを検討できることです。
要求されたファイル名とパス、およびすべてのパラメータが含まれます

完全な URL リンク: http://www.alipay.com/alipay/index.html
$request_uri:/alipay/index.html#parameters

おすすめ

転載: blog.csdn.net/hzxOnlineOk/article/details/129378280