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ユーザーにはファイルにアクセスする権限がありません