nginx-error_page

nginx error_page
は、エラー応答コードに従って対応するページを返すか、応答コードを指定します
ここに画像の説明を挿入

error_page + notfound_uri
示例:

server {
    
    
    listen         80;
    server_name    www.a.com;
    root           /data/nginx/domain1;
    location      ~ /images/  {
    
    

        root          /data/nginx/test1;
        error_page    404   /notfound.html;

    }
    location       /   {
    
    

        root           /data/nginx/test;
        error_page     404  /notfound.html;


    }
}

まず、2つのルートディレクトリにnotfound.htmlを作成します

echo "/data/nginx/images/notfound.html" > /data/nginx/images/notfound.html
echo "/data/nginx/test1/notfound.html"  > /data/nginx/test1/notfound.html

次に、ブラウザにアクセスして、2つのルートに存在しないa.htmlwww.a.com/a.htmlを
照合します。

location       /   {
    
    

        root           /data/nginx/test;
        error_page     404  /notfound.html;


    }

応答ここに画像の説明を挿入

ブラウザが
http://www.a.com/images/a.htmlにアクセスする
と、

 location      ~ /images/  {
    
    

        root          /data/nginx/test1;
        error_page    404   /notfound.html;

    }

応答
ここに画像の説明を挿入
ローカリゼーションは一致していませんが、同じnotfound.htmlに応答していることがわかります。その理由は、http://www.a.com/images/a.html uri = / images / a.htmlにアクセスすると、404とuri = /notfound.html完全なURL = http:// wwwが返されるためです。 a.com/notfound.html一致するように

location       /   {
    
    

        root           /data/nginx/test;
        error_page     404  /notfound.html;


    }

次に、/ data / nginx / test /notfound.htmlで応答します。

ブラウザがエラーページを傍受するのを防ぐために、2つの場所で404や200などの応答コードを指定できます。

location       /   {
    
    

        root           /data/nginx/test;
        error_page     404  =200 /notfound.html;


    }

示されているように
ここに画像の説明を挿入

ここに画像の説明を挿入

error_page +場所@

サービスの一部がアップグレードされ、特定のページにアクセスしたときにエラーが報告された場合、カスタマーエクスペリエンスに影響を与えないように、ページは更新されていないサーバーにプロキシされます。
構成は次のとおりです。

server {
    
    
    listen          8080;
    error_log       /var/log/nginx/domain2_error.log;
    location       /  {
    
    
        root        /data/nginx/domain2;
        error_page  404  @fallback;

    }
    location      @fallback {
    
    

        proxy_pass http://192.168.243.129:8081;

    }
}

準備作業、仮想ホスト192.168.243.129:8080のルートディレクトリを作成し、index.htmlを書き込んでWebサイトが正常であることをテストし
ます仮想ホスト192.168.243.129:8080とそのルートディレクトリを作成し、index.htmlとa.htmlを書き込みます
次の図に示すように
、アップグレードされたサーバーを表します
ここに画像の説明を挿入

アップグレードされていないサーバーに代わって、
ここに画像の説明を挿入
元のa.htmlコンテンツ
ここに画像の説明を挿入

ブラウザでhttp://192.168.243.129:8080/a.htmlに
ここに画像の説明を挿入
アクセスします。画像からわかるように、http://192.168.243.129:8080 / a.htmlにアクセスするとエラー404が報告されますが、ページは次の場所にジャンプします。 192.168.243.129:8081 / a.htmlが正しいページに応答しました。
顧客がこのエラーを認識しないようにするために、エラーコードをバックエンドサーバーと整合性を保ち、次のように構成できます。

server {
    
    
    listen          8080;
    error_log       /var/log/nginx/domain2_error.log;
    location       /  {
    
    
        root        /data/nginx/domain2;
        error_page  404 =  @fallback;

    }
    location      @fallback {
    
    

        proxy_pass http://192.168.243.129:8081;

    }
}
~

効果は図のようになり
ここに画像の説明を挿入
、エラーは外部のWebサイトに定義されます

アクセスエラーが報告されると、ページは外部ネットワークにリダイレクトされ、
構成は次のようになります。

server {
    
    

    listen                8082;
    location              /   {
    
    

        root              /data/nginx/domain4;
        error_page        404   http://www.baidu.com;

    }



}

http://192.168.243.129:8082/a.htmlにアクセスします

ここに画像の説明を挿入指定された応答コード302および301の変更のみがサポートされ、他の応答コードの変更は有効になりません。
例:

server {
    
    

    listen                8082;
    location              /   {
    
    

        root              /data/nginx/domain4;
        error_page        404 =200  http://www.baidu.com;

    }



}

もう一度アクセスしてください
ここに画像の説明を挿入
。301と指定した場合、応答コードは302のままです。
ここに画像の説明を挿入

200:ヘルスレスポンスコード
302:一時的なリダイレクト
301:永続的なリダイレクト
304:ブラウザのキャッシュが変更されていません
404:ページが見つかり
ません403:権限がありません。通常、nginxユーザーにはファイルにアクセスする権限がありません

おすすめ

転載: blog.csdn.net/weixin_45937255/article/details/115324250