首页 > 系统相关 >NGINX 配置404错误页面跳转指定页面

NGINX 配置404错误页面跳转指定页面

时间:2024-03-04 10:22:23浏览次数:20  
标签:errors http nginx 404 NGINX html 跳转 页面

主要是记录踩过的一个坑。。。

nginx要自定义404和401的页面,但是error_page 配置没有生效,没有正常跳转。

 error_page 404  /404.html;

error_page 404 = http://www.test.com/error.html;

http://tengine.taobao.org/nginx_docs/cn/docs/http/ngx_http_core_module.html#error_page

这是因为我们的404静态资源在上游服务器上,而不是当前nginx直接提供

nginx proxy 启用自定义错误页面:

语法:proxy_intercept_errors on | off;

默认值:

proxy_intercept_errors off;

上下文:http, server, location

当被代理的后端服务器的响应状态码大于等于300时,决定是否直接将响应发送给客户端,亦或将响应转发给nginx由error_page指令来处理。

 proxy_intercept_errors 为on 表示 nginx按照原response code 输出,后端是404就是404。这个变量开启后,我们才能自定义错误页面。

http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors

总结几种404 自定义页面的配置:

第一种:Nginx自己的错误页面

看下面的配置,这种情况下不需要修改任何参数,就能实现这个功能。

server {

    listen      80;

    server_name  www.test.com;

    root   /data/wwwroot/test;

   index  index.html index.htm;

    location / {

    }

    # 定义错误页面码,如果出现相应的错误页面码,转发到那里。

    error_page  404 403 500 502 503 504  /404.html;

    # 承接上面的location。

    location = /404.html {

    # 放错误页面的目录路径。当然默认可以在网站目录下,也可以定义放置错误页面的位置。

        root   /usr/share/nginx/html;

    }

}

第二种:反向代理的错误页面

如果后台静态资源处理报错抛出404,想把这个状态叫Nginx反馈给客户端或者重定向到某个连接,配置如下:

upstream www {

    server 192.168.1.88:80  weight=20 max_fails=2 fail_timeout=30s;

}

server {

    listen       80;

    server_name www.test.com;

    root   /data/wwwroot/test;

    index  index.html index.htm;

     location / {

        if ($request_uri ~* '^/$') {

                    rewrite .*   http://www.test.com/index.html redirect;

        }

        # 关键参数:这个变量开启后,我们才能自定义错误页面,当后端返回404,nginx拦截错误定义错误页面

        proxy_intercept_errors on;

        proxy_pass      http://www;

        proxy_set_header HOST   $host;

        proxy_set_header X-Real-IP      $remote_addr;

        proxy_set_header X-Forwarded-FOR $proxy_add_x_forwarded_for;

    }

    error_page    404  /404.html;

    location = /404.html {

        root   /usr/share/nginx/html;

    }

}

第三种:Nginx解析php代码的错误页面

如果后端是php解析的,需要加一个变量

在http段中加一个变量 fastcgi_intercept_errors on 就可以了。

指定一个错误页面:

error_page    404  /404.html;

location = /404.html {

    root   /usr/share/nginx/html;

}

注意事项:

1.必须要添加:fastcgi_intercept_errors on; 如果这个选项没有设置,即使创建了404.html和配置了error_page也没有效果。

fastcgi_intercept_errors 语法:

fastcgi_intercept_errors on|off

默认: fastcgi_intercept_errors off

当FastCGI后端服务器响应状态码大于等于300时,决定是否直接将响应发送给后端客户端,或者将响应转发给nginx由 error_page指令来处理。

http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_intercept_errors

fastcgi_intercept_errors on表示接收fastcgi输出的http 1.0 response code,后端php可以输出header指示nginx输出什么错误页面。开启这个之后,我们才能在php里面自定义错误代码和页面。

 添加位置: http, server, location

默认情况下,nginx不支持自定义404错误页面,只有这个指令被设置为on,nginx才支持将404错误重定向。

这里需要注意的是,并不是说设置了on,nginx就会将404错误重定向。

在nginx中404错误重定向生效的前提是设置了fastcgi_intercept_errors on,并且正确的设置了error_page这个选项(包括语法和对应的404页面)

2.不要出于省事或者提高首页权重的目的将首页指定为404错误页面,也不要用其它方法跳转到首页。

3.自定义的404页面必须大于512字节,否则可能会出现IE默认的404页面。例如,假设自定义了404.html,大小只有11个字节(内容为:404错误)。

标签:errors,http,nginx,404,NGINX,html,跳转,页面
From: https://www.cnblogs.com/gongxianjin/p/18051286

相关文章

  • js页面当中没有写回车事件,但是有回车效果
    前两天遇到一个问题,研究了我很差事件。问题如下:页面只有一个文本框,没有写任何回车事件,但是点回车的时候,就会触发回车,回传页面。于是各种google,终于有了结果:如果表单里有一个type=”submit”的按钮,回车键生效。如果 表单里只有一个type=”text”的input,不管按钮是什么type,回......
  • Nginx 最全使用教学
    Nginx最全使用教学Nginx是一款高性能的HTTP和反向代理服务器,也是世界上最受欢迎的Web服务器之一。它以其高效、稳定、可扩展的特点而闻名。这份教学将涵盖Nginx的所有核心功能和配置,帮助您从零开始学习Nginx的使用。Nginx简介1.1.Nginx的功能Nginx具有以下主......
  • nginx系列文章01---基础知识
    1.何为反向代理?在介绍反向代理之前,先来了解一下正向代理。正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理,下面是正向代理的原理图。由于工作环境原因,日常工作只能局限于单位的......
  • Vue3学习(二十一)- 文档管理页面布局修改
    写在前面按照国际惯例,要先聊下生活,吐槽一番,今天是2月14日,也是下午听老妈说,我才知道!现在真的是对日期节日已经毫无概念可言,只知道星期几。现在已经觉得写博客也好,学习文章也罢,和写日记一样,已经融入到我的生活中,或者更确切的说,变成生活的一部分了。饭后和老妈闲聊了几句后,我发......
  • 对于购物中心HTML前端页面的优化
    在对同学上学期的购物中心HTML前端页面项目进行学习后,我对它进行了优化。在原先的基础上,给它的注册、忘记密码按钮增加了跳转接口,使得这两个功能可以实现跳转,并且在商品展示页增加了返回登录页面的接口。原始代码列表:优化后代码列表:代码文件:原始登录页.html:点击查看代码<......
  • 使用 CSS 如何禁用浏览器打印页面 All In One
    使用CSS如何禁用浏览器打印页面AllInOneprint.css禁用PDF导出网页有时,你的网站或应用程序可能希望改善用户在打印内容时的体验。有几种可能的情况:你希望根据纸张的大小和形状调整布局。你希望使用不同的样式来增强纸上内容的外观。你希望使用更高分辨率的图像以......
  • VScode 配置php调试环境变量. phpstudy + nginx+ php7.4, 解决无法断点问题
    参考大佬的帖子https://www.cnblogs.com/hfdp/p/17028596.htmlhttps://blog.csdn.net/qq_61739597/article/details/132433472 (远程调试)踩坑经验我从phpstudy添加好网站才进行配置.当配置好之后,一直没有断点下来. 非常郁闷找不到问题. 写了一个demo,php文件,通过......
  • Taurus.MVC WebMVC 入门开发教程7:部分视图和页面片段(结束篇)
    本系列的目录大纲为:Taurus.MVCWebMVC入门开发教程1:框架下载环境配置与运行Taurus.MVCWebMVC入门开发教程2:一个简单的页面呈现Taurus.MVCWebMVC入门开发教程3:数据绑定ModelTaurus.MVCWebMVC入门开发教程4:数据列表绑定List<Model>Taurus.MVCWebMVC入门开发教程5......
  • 记录一次 nginx+php 项目接口普通请求正常,但是上传接口500的问题
    由于nginx是我用brew命令安装的,很多配置都是没有更改的,包括 client_max_body_size都是默认的,上传文件时超出最大限制且缓存目录 client_body_temp没有设置写入权限,所以导致接口500打开nginx.conf将下面的配置追加到 http的最后,然后重启服务brewservicesrestartnginx......
  • Nginx基本知识
    一、什么是nginxNginx是高性能的HTTP和反向代理的web服务器,处理高并发能力是十分强大的,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。二、正向/反向代理正向代理:nginx作为客户端去访问服务器。反向代理:nginx作为服务器接收请求。此时反向代理服务器和目标服务......