Nginx 错误页面 error_page 重定向

原创
林里克斯

Nginx 配置参数 error_page 是将访问 Nginx 遇到的指定 HTTP 错误码(404/502/503/等)重定向到一个页面


一、案列


1.Nginx 默认 error_page

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504  /50x.html;
location = /50x.html {
}

2.try_files

location /error {
    root  html;
    ry_files $uri    /502.html;
}
#当访问到不存在的页面时,将跳转到/502.html页面,此时浏览器地址栏 URL 没变化,但是状态码不再是 502,而是200

重定向到内部页面

location /error {
    root  html;
    error_page 502  /502.html;
}

重定向到外部页面

location /error {
    root  html;
    error_page 502  https://blog.kjarbo.com/error;
}

3.error_page 502 503 /50x.html

error_page 502 503 /50x.html;
location = /50x.html {
    root /usr/share/nginx/html;
}  
error_page 502 503 =200 /50x.html;
location = /50x.html {
    root /usr/share/nginx/html;
} 
#访问产生 502 、503 的时候给用户的返回状态是200,内容是50x.html

4.named location

error_page 500 502 503 504 @maintenance;
location @maintenance {    
    proxy_pass http://backend;

5.动态 php

error_page 404 = /404.php;
location ~ \.php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}  

6.修改 HTTP 状态码

location /error {
    root  html;
    error_page 502 = /502.html;
}
#由于这里 /502.html 页面是存在的,状态码是 200

二、Nginx 自定义 404 错误页面配置中有无等号的区别


error_page 404 /404.html 可显示自定义 404 页面内容,正常返回 404 状态码。

error_page 404 = /404.html 可显示自定义 404 页面内容,但返回 200 状态码。

error_page 404 /404.php 如果是动态 404 错误页面,包含 header 代码(例如 301 跳转),将无法正常执行。正常返回 404 代码。

error_page 404 = /404.php 如果是动态 404 错误页面,包含 header 代码(例如301跳转),加等号配置可以正常执行,返回 php 中定义的状态码。但如果 php 中定义返回 404 状态码,404 状态码可以正常返回,但无法显示自定义页面内容(出现系统默认 404 页面),这种情况可以考虑用 410 代码替代( header("HTTP/1.1 410 Gone"); 正常返回 410 状态码,且可正常显示自定义内容)。


三、案例输出


1.上游应用程序不在线时,返回 /502.html

server {
    listen      80;
    server_name blog.kjarbo.com;

    location / {
        proxy_pass http://10.10.10.10:80;
        error_page 502 =200 @maintenance;
    }

    location @maintenance {
        root /usr/local/nginx/html/error;
        try_files $uri /502.html =503;
    }
}

2.Nginx 反向代理无法加载 jscss 文件

location ~ .*\.(js|css)$ {
    root  /usr/local/nginx/html/static;
}

3.禁止访问的文件或目录

location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
    return 404;
}

Over~

版权协议须知!

本篇文章来源于 Uambiguous ,如本文章侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意

1470 0 2020-09-20


分享:
Linux 下让普通用户的 nginx 能使用 1024 以下端口

普通用户不允许使用 1024 以下的端口,如果提供的是网页...

阅读全文
Nginx 之版本信息安全优化

Nginx 社区非常活跃,版本也一直在更新迭代。有些版本会...

阅读全文
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif
博主卡片
林里克斯 博主大人
一个致力于Linux的运维平台
运维时间
搭建这个平台,只为分享及记载自己所遇之事和难题。

现在时间 2024-04-26

今日天气
站点统计
  • 文章总数:240篇
  • 分类总数:29个
  • 评论总数:10条
  • 本站总访问量 215679 次

@奥奥

@Wong arrhenius 牛比

@MakerFace 厉害了!