文档章节

nginx error_page注意事项

perofu
 perofu
发布于 2015/09/18 16:08
字数 396
阅读 5401
收藏 3

        nginx error_page对于同一个http状态码,只能执行一次,第二次就不会再执行了(初认识有错误)。

       例如:403状态

       下面这段代码,如果访问出现403,会跳到retry段,在没有,就会直接出现403,而不会跳到http://www.perofu.com/download/error403.html

              location @retry  {

            #return 409;

            root   /data1/;

            index  index.html index.htm;

            error_page 403    http://www.perofu.com/download/error403.html;

          }

          location / {

            root   /data/;

              index  index.html index.htm;

            error_page 403 = @retry ;

            error_page 404 =   http://www.perofu.com;

          }

 

今天有做了个测试,如果使用lua把状态码改成别的,再使用error_page,会不会可以呢?

 

location @retry {

                #       return 409;

                        root /data/www;

                        index index.html   index.htm index.php;

          content_by_lua '

                return   ngx.exit(410);

        ';

                        error_page 404 =   http://www.baidu.com;

                        error_page 403 =   http://danhuaer.com/;

                        error_page 410 = http://news.17173.com/game/yzdzh.shtml;

                }

 

                location / {

                        root  /data/www/www;

                        index index.html   index.htm index.php;

                        error_page 403 =   @retry;

                        error_page 404 =   http://www.perofu.com;

                  }

 

       我把/data/www/www目录下的index.html删除了,匹配到/,会出现403,再跳到retry中,使用lua返回401的状态码,看error_page是否能跳转到http://news.17173.com/game/yzdzh.shtml

 

       验证:

 

       看来error_page在一次请求中,只能使用一次,无关状态码是否相同

 

       不能使用error_page,怎么才能把nginx的状态码不让用户看的,而是可以直接跳到指定的页面?

 

       当然是使用lua就行跳转了

location @retry {

                #       return 409;

                        root /data/www;

                        index index.html   index.htm index.php;

          content_by_lua '

                --return   ngx.exit(410);

                ngx.redirect("http://jd.com", 302);

        ';

                        error_page 404 =   http://www.baidu.com;

                        error_page 403 =   http://danhuaer.com/;

                        error_page 410 =   http://news.17173.com/game/yzdzh.shtml;

                }

 

                location / {

                        root  /data/www/www;

                        index index.html   index.htm index.php;

                        error_page 403 =   @retry;

                        error_page 404 =   http://dl.pconline.com.cn;

                }

 

       访问就会直接跳转到jd.com

 

 

 

 

 

 


© 著作权归作者所有

共有 人打赏支持
perofu
粉丝 128
博文 156
码字总数 131887
作品 0
广州
系统管理员
私信 提问
nginx 404 50x 配置 (转载)

(转载)http://www.cnblogs.com/jiangyao/archive/2010/07/10/1774981.html 1.创建自己的404.html页面 2.更改nginx.conf在http定义区域加入: fastcgiintercepterrors on; 3.更改nginx.con......

cat_l_fish
2015/01/07
0
0
nginx error_page详解

error_page指令解释 nginx指令error_page的作用是当发生错误的时候能够显示一个预定义的uri,比如: error_page 502 503 /50x.html;1 这样实际上产生了一个内部跳转(internal redirect),当访...

Tenderrain
2018/05/24
0
0
nginx 499错误

nginx 499问题 对应nginx的源码列表: 可以看到是客户端主动关掉了链接,可能存在以下几种情况:(1)真的是客户端关闭了连接;(2)请求过于密集,nginx认为是不安全的请求,关闭了连接,处...

jamal117
2016/07/17
17
0
apache转换到了nginx的几个注意点

【from】www.mlives.cn 最近把整站从apache升级到了nginx,客户的站点大概有30台服务器大部分架构位tomcat+apache,只有一个php页面 一下是我升级遇到的几个问题的注意点 1. 当我们去访问服务...

范堡
2009/05/06
1K
0
nginx代理配置

nginx https代理 nginx proxy代理 nginx try_files代理 此配置学习于vue.js教程。

977606143
2017/12/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式事务解决方案框架(LCN)

什么是XA接口 XA是一个分布式事务协议,由Tuxedo提出。XA中大致分为两部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如Oracle、DB2这些商业数据库都实现了XA接口...

群星纪元
14分钟前
2
0
linux 操作系统 常用命令和软件安装

1.系统时间更新 ntpdate time.windows.com 2.传送文件 rsync -av /home/data/a.dat -e ssh root@192.168.0.100:/home 3.传送文件夹 scp -r /home/data root@192.168.0.100:/home 4.JDK安装 ......

WJtiny
36分钟前
1
0
pg_lightool基于basebackup的单表恢复和块恢复

开源软件pg_lightool,实现了基于wal日志的块恢复。详情参见博客:https://my.oschina.net/lcc1990/blog/1931485。由于wal日志中FPW的不确定性,它不能作为一个数据库恢复的解决方案。目前对...

movead
44分钟前
2
0
对比剖析Swarm Kubernetes Marathon编排引擎

Docker Native Orchestration 基本结构 Docker Engine 1.12 集成了原生的编排引擎,用以替换了之前独立的Docker Swarm项目。Docker原生集群(Swarm)同时包括了(Docker Engine \/ Daemons)...

Linux就该这么学
45分钟前
2
0
Mybatis的结果集处理

此时我们已经可以把整段的SQL语句取出,但还并没有在数据库中去执行,我们可以先来分析一下配置文件中SQL语句执行后的结果集是如何处理的。 Mybatis会将结果集按照映射配置文件中定义的映射规...

算法之名
57分钟前
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部