Nginx设置404错误页面跳转的几种方法总结

 更新时间:2024年03月18日 10:40:10   作者:MASTERYEE  
一个网站项目,肯定是避免不了404页面的,通常使用Nginx作为Web服务器时,有些相关配置方法,下面小编给大家带来了Nginx实现404页面的几种方法,感兴趣的朋友一起看看吧

一、Nginx在Linux上设置404错误页面

  • Linux版本:Centos 7.4
  • Nginx版本:nginx-1.14.0.tar.gz
  • nginx安装目录参考: /usr/local/nginx则是我的安装目录

说明:我Linux服务器上已经在tomcat上部署了一个项目,使用Nginx进行的代理,
访问项目不存在的页面时,出现的是Nginx默认的404页面,现在我配置我自己写的404页面进行提示

注意:网上大多数博客写的都只有一种情况,要么就是使用 proxy_intercept_errors on;, 要么就是使用fastcgi_intercept_errors on; 没有说明这两种的区别, 还有也没有说明404.html文件应该放在服务器的什么位置,我在此处优先进行说明, 如果你本地有部署项目,优先使用proxy_intercept_errors on;这个配置进行尝试, 如果没有部署项目,则使用fastcgi_intercept_errors on; 这个进行尝试,也可以两个全加上, 其次404.html文件放在nginx安装目录的html文件夹下

1.1 第一种配置情况(跳转网络地址)

error_page配置的是http这种的网络地址

在http下配置 proxy_intercept_errors on;

http {
    include       mime.types;
    default_type  application/octet-stream;

	proxy_intercept_errors on;
	... 以下省略

在server下配置 error_page
以下三种情况都可以起作用, 可以配置在server第一层的任何位置, 不受影响
也可以配置在location里面,我下面代码注释的地方都是可以配置的

  server {
        listen       80;
        server_name  www.xxxxxxx.com;
        #error_page  404  http://www.baidu.com;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://search-masteryee;
			proxy_set_header   REMOTE-HOST $remote_addr;
			proxy_set_header   Host $host; 
			proxy_set_header   X-Real-IP $remote_addr; 
			proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
			client_max_body_size    20m; 
			#error_page  404  http://www.baidu.com;
        }
		
		location /upload {
            root   /usr/;
            index  index.html index.htm;
        }
		
        error_page  404  http://www.baidu.com;
       
    }

1.2 第二种配置情况(跳转本地地址)

error_page配置的是本地服务器的页面地址,

  • 说明:我的404.html页面文件放在nginx安装目录下的html文件夹内
  • 如果编写的404.html页面中有图片等外部文件,使用相对地址是不行的

在http下配置 proxy_intercept_errors on;

http {
    include       mime.types;
    default_type  application/octet-stream;

	proxy_intercept_errors on;
	... 以下省略
	

在server中配置error_page
说明:我的nginx安装在/usr/local/下

    server {
        listen       80;
        server_name  www.xxxxxxx.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://search-masteryee;
			proxy_set_header   REMOTE-HOST $remote_addr;
			proxy_set_header   Host $host; 
			proxy_set_header   X-Real-IP $remote_addr; 
			proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
			client_max_body_size    20m; 
        }
		
		location /upload {
            root   /usr/;
            index  index.html index.htm;
        }

        
		error_page   404  /404.html;
        location = /404.html {
            #使用绝对地址, 跳转服务器/usr/local/nginx/html/404.html
            root   /usr/local/nginx/html;
        }
        
        # 这种方式和上面的方式均可起作用,只需要选择一种即可,本文中没有进行进一步注释
        error_page   404  /404.html;
        location = /404.html {
            # 使用相对地址, 跳转nginx安装目录下的html/404.html
            root   html;
            # 下面这种多了一个/ 反而不起作用
            #root   /html;
        }
        
        # 以下这几种网上比较多的方式,均试过,无法跳转正确页面或不起跳转作用
        #error_page   404  404.html;
        #error_page   404  /404.html;
        #error_page   404  html/404.html;
        #error_page   404  /html/404.html;
        #error_page   404  /usr/local/nginx/html/404.html;
        #error_page   404  usr/local/nginx/html/404.html;
        
    }

可以配置多种返回码的多个错误页面,也可以同时配置多个错误码跳转一个页面,可以同时存在 如下所示

server {
        listen       80;
        server_name  www.xxxxxxx.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://search-masteryee;
			proxy_set_header   REMOTE-HOST $remote_addr;
			proxy_set_header   Host $host; 
			proxy_set_header   X-Real-IP $remote_addr; 
			proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
			client_max_body_size    20m; 
        }
		
		location /upload {
            root   /usr/;
            index  index.html index.htm;
        }

        #error_page  404	/404.html;
		
		# 错误页面的种类也可以是多个
		
		# 这里的错误码可以是多个
		error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        
        # 这里是错误吗也可以是一个
		error_page   404  /404.html;
        location = /404.html {
            root   html;
        }

       
    }

1.3 第三种情况(tomcat未启动时)

当我把我的tomcat服务器关掉时,我服务器就没有运行项目了,这时在访问页面,则上述配置没有产生效果,此时则需要添加一个配置
fastcgi_intercept_errors on;

在http下配置 fastcgi_intercept_errors on;

http {
    include       mime.types;
    default_type  application/octet-stream;

	fastcgi_intercept_errors on;
	proxy_intercept_errors on;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #   

server中配置如下,将500 502 503 504等状态码一致性跳转404页面

server {
        listen       80;
        server_name  www.xxxxxxx.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://search-masteryee;
			proxy_set_header   REMOTE-HOST $remote_addr;
			proxy_set_header   Host $host; 
			proxy_set_header   X-Real-IP $remote_addr; 
			proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
			client_max_body_size    20m; 
        }
		
		location /upload {
            root   /usr/;
            index  index.html index.htm;
        }

        #error_page  404	/404.html;
		
		error_page   500 502 503 504  /404.html;
		error_page   404  /404.html;
        location = /404.html {
            root   html;
        }

       
    }

1.4 第四种情况(proxy_intercept_errors的配置地址可多样)

proxy_intercept_errors on;这个配置不一定需要放在http下面,也可以是server下,也可以是server的location下

server {
        listen       80;
        server_name  www.masteryee.com;
		proxy_intercept_errors on;
        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://search-masteryee;
			proxy_set_header   REMOTE-HOST $remote_addr;
			proxy_set_header   Host $host; 
			proxy_set_header   X-Real-IP $remote_addr; 
			proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
			client_max_body_size    20m; 
			#可以是这里
			#proxy_intercept_errors on;
        }
		location /upload {
            root   /usr/;
            index  index.html index.htm;
        }
		
		error_page   500 502 503 504  /404.html;
		error_page   404  /404.html;
        location = /404.html {
            root   html;
        }
       
    }

1.5 proxy_intercept_errors和fastcgi_intercept_errors的理解

配置proxy_intercept_errors on; 时配置的错误页面表示的是当服务器返回的状态码为我们配置的状态码时,我们才进行的页面跳转。如:服务器中没有xxxx.do接口时,我们访问了这个接口,配置了
proxy_intercept_errors on;则也会进行页面跳转

如果服务器中没有开启服务,则配置proxy_intercept_errors on; 无用,则需要再添加fastcgi_intercept_errors on; 配置, 这样的话,出现页面错误时也会进行跳转

以上就是Nginx设置404错误页面跳转的几种方法总结的详细内容,更多关于Nginx设置404错误页面的资料请关注脚本之家其它相关文章!

相关文章

  • Nginx为已安装nginx动态添加模块

    Nginx为已安装nginx动态添加模块

    本篇文章主要介绍了Nginx之为已安装nginx动态添加模块的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • nginx 目录密码保护的设置方法

    nginx 目录密码保护的设置方法

    比如要对 网站目录下的 test 文件夹 进行加密认证
    2010-12-12
  • LNMP简介(最新推荐)

    LNMP简介(最新推荐)

    LNMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写,L指Linux,N指Nginx,M一般指MySQL,也可以指MariaDB,P一般指PHP,也可以指Perl或Python
    2023-08-08
  • Nginx反向代理后台报404遇到的解决方法

    Nginx反向代理后台报404遇到的解决方法

    Nginx反向代理404错误通常是由服务器配置不正确、文件路径不正确、文件权限不正确、文件名大小写不正确等,本文主要介绍了Nginx反向代理后台报404遇到的解决方法,感兴趣的可以了解一下
    2023-11-11
  • Nginx的完整配置详解及实例代码

    Nginx的完整配置详解及实例代码

    这篇文章主要介绍了Nginx的完整配置详解及实例代码的相关资料,需要的朋友可以参考下
    2017-03-03
  • nginx中配置pathinfo模式示例

    nginx中配置pathinfo模式示例

    这篇文章主要介绍了nginx中配置pathinfo模式示例,本文详细记录了摸索过程和成功的配置案例,需要的朋友可以参考下
    2014-08-08
  • Nginx中的用户认证配置及阻止用户使用代理访问的方法

    Nginx中的用户认证配置及阻止用户使用代理访问的方法

    这篇文章主要介绍了Nginx中的用户认证配置及阻止用户使用代理访问的方法,用户认证部分用到了自带的ngx_http_auth_basic_module模块,需要的朋友可以参考下
    2016-01-01
  • Nginx Gunicorn flask项目部署思路分析详解

    Nginx Gunicorn flask项目部署思路分析详解

    这篇文章主要为大家介绍了Nginx Gunicorn flask项目部署思路分析详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Nginx安装与使用教程详解

    Nginx安装与使用教程详解

    这篇文章主要介绍了Nginx安装与使用教程详解的相关资料
    2016-09-09
  • Nginx配置并兼容HTTP实现代码解析

    Nginx配置并兼容HTTP实现代码解析

    这篇文章主要介绍了Nginx配置并兼容HTTP实现代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11

最新评论