在服务停机升级或者服务暂不可用时,往往希望能够返回给用户更为明确和友好的响应信息。可以通过修改nginx配置文件,达到返回自定义信息的效果。有如下几种配置方式:

(1)Nginx接收到的所有请求,都返回指定的静态资源(静态维护页面或文本)。
修改nginx.conf,在server配置中添加如下配置。其中/maintain.html是针对于nginx静态资源根目录(一般为/usr/local/nginx/html)的相对路径,同时由于nginx不允许静态资源响应POST请求(会报"HTTP 405 Method Not Allowed"错误),故需将405响应改为200。

server {
listen 9000;
server_name www.example.com;
# ... 此处省略原有配置 # 所有页面都转跳到维护页
rewrite ^(.*)$ /maintain.html break;
#由于Nginx不允许静态文件响应POST请求,故此处将“405 not allowed”修改为“200 ok”
error_page 405 =200 $uri; # ... 此处省略原有配置
}

(2)针对具体应用返回指定静态资源

修改nginx.conf对应应用的location配置:

location /capgate/capTransaction {
rewrite ^(.*)$ /maintainCap.txt break;
error_page 405 =200 $uri;
}

(3)针对具体应用返回固定响应信息

修改nginx.conf对应应用的location配置:

location /cashier {
add_header Content-Type 'text/html; charset=utf-8';
return 200 'returnCode=600002&returnMessage=系统维护中(8:50-9:40),请稍后再试!System Maintaining(8:50-9:40), try it later!';
}

如果需要在header中添加更多信息,例如报文签名,可通过add_header进行指定:

location /new_mca {
add_header Content-Type 'text/html; charset=utf-8';
add_header sign 'Tnzlr/doh7jZpg0ZKPkpjgAT9cMrf8p+a1gCxgwWAmiPNTd1jzFSQRoAxZLTgRAD6kLIIWYsq32XMLi6NObxHuFIpVNJAvmkLODXvA2O7K12qcsvSJn3Io31IMegBAY6dkjelBnHlh/9bkmjKPSziUZ94ZoaOBW4jpkJJ7sStLc=';
return 200 '{"body":{"USER_ID":"","USER_NO":"","NEW_DEVICE_FLG":"","USER_NAME":"","LOG_FLAG":"","USR_GROUP":"","USER_STATE":""},"responseHeader":{"SUPPORT_VERSION":"","SERVER_TIME":"","RSP_CD":"999999","RSP_MSG":"系统维护中(8:50-9:40),请稍后再试!System Maintaining(8:50-9:40), try it later!"}}';
}

(4)针对不同http响应码指定返回信息

error_page 501 502 503 504 505 @maintain;
location @maintain {
rewrite ^(.*)$ /maintain.html break;
} error_page 405 =200 $uri;

注:nginx.conf配置文件在nginx安装目录的conf目录下,修改完后,进入sbin目录,执行./nginx -t命令检查配置文件格式是否正确,确认正确后,执行./nginx -s reload命令重新加载nginx配置,使之前的更改生效。

Nginx挂载维护页或返回自定义响应信息的更多相关文章

  1. .NET Core授权失败如何自定义响应信息?

    前言 在.NET 5之前,当授权失败即403时无法很友好的自定义错误信息,以致于比如利用Vue获取到的是空响应,不能很好的处理实际业务,同时涉及到权限粒度控制到控制器.Action,也不能很好的获取对 ...

  2. Flask Response响应(flask中设置响应信息的方法,返回json数据的方法)

    设置响应信息的方法 1.  返回自定义的响应头,有两种方式: (1)  第一种是:视图函数return的时候,使用元组,返回自定义的信息 返回的时候的状态码可以自定义信息:"状态码   自定 ...

  3. IIS7.0设置404错误页,返回500状态码

    一般在II6下,设置自定义404错误页时,只需要在错误页中选择自定义的页面,做自己的404页面即可.但是在IIS7.0及以上时,设置完404错误页后,会发现状态码返回的是500,并且可能会引起页面乱码 ...

  4. 【nginx】4xx,5xx 保持自定义header

    问题 nginx使用中,如果请求返回的状态code类似404或者50x这种,仍然返回自定义的header. 分析和解决 nginx文档中关于 add_header的部分 有这么一句 Adds the ...

  5. iis设置404错误页,返回500状态码

    一般在II6下,设置自定义404错误页时,只需要在错误页中选择自定义的页面,做自己的404页面即可.但是在IIS7.0及以上时,设置完404错误页后,会发现状态码返回的是500,并且可能会引起页面乱码 ...

  6. shiro异步请求返回JSON响应

    shiro异步请求返回JSON响应 需求1:当shiro请求资源,但是没有进行认证时,默认是进行重定向,现在需要返回JSON响应.注意异步请求,服务器重定向后,ajax拿到的是浏览器重定向后的到的页面 ...

  7. REST服务返回自定义的HttpResponseMessage

    WebApi框架中对资源的操作,都是通过其Controller提供的各种方法(GET,POST,PUT,DELET等)来实现,而这些方法的返回信息有以下几种形式: 方法返回类型 HttpRespons ...

  8. [BS-10] 统一设置app所有页面的“返回”按钮样式

    统一设置app所有页面的“返回”按钮样式 如果想统一设置app所有页面的“返回”按钮样式,首先自定义WZNavigationController类继承UINavigationController类,然 ...

  9. Asp.Net MVC如何返回401响应码

    需求:     在默认创建的Asp.Net MVC项目中(这里使用VS2013),需要手动返回一个401响应码给浏览器.我们的代码可能是下面这样子的.   public ActionResult Un ...

随机推荐

  1. JMeter 脚本开发(五)

    一.JMeter 元件运行顺序 执行顺序逻辑如下: 1.配置元件(如果存在) 2.前置处理器(如果存在) 3.定时器(如果存在) 4.取样器(如果存在) 5.后置处理器(如果存在且取样器的结果不为空) ...

  2. Access删除某一字段重复的数据但是要保留一条

    如下图所示,Checktime这个字段有很多重复数据,我需要把所有Checktime这个字段重复的都删掉,但是还需要保留一条: 在Access做删除查询怎么做呀,来个Access高手,复制粘贴党请手下 ...

  3. 【ReactNative】Mac下分分钟打包 Android apk

    时间:2016-11-20 09:17:07 地址:https://github.com/zhongxia245/blog/issues/52 Mac 下 ReactNative如何打包构建Andro ...

  4. Python3编写网络爬虫07-基本解析库pyquery的使用

    三.pyquery 简介:同样是一个强大的网页解析工具 它提供了和jQuery类似的语法来解析HTML文档,支持CSS选择器,使用非常方便 安装: pip install pyquery 验证: im ...

  5. 有效的括号golang实现

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...

  6. [方法提炼] 获取Android设备序列号方法

    通过这个方法可以检测设备是否连接成功,如果有一台或者多台设备,可以将所有设备序列号全部输出 # -*- coding:utf-8 -*- import os def attachDeviceList( ...

  7. (转)Python网络爬虫实战:世纪佳缘爬取近6万条数据

    又是一年双十一了,不知道从什么时候开始,双十一从“光棍节”变成了“双十一购物狂欢节”,最后一个属于单身狗的节日也成功被攻陷,成为了情侣们送礼物秀恩爱的节日. 翻着安静到死寂的聊天列表,我忽然惊醒,不行 ...

  8. 基于Redis的INCR实现一个限流器

    模式:计数器 计数器是 Redis 的原子性自增操作可实现的最直观的模式了,它的想法相当简单:每当某个操作发生时,向 Redis 发送一个 INCR 命令. 比如在一个 web 应用程序中,如果想知道 ...

  9. Linux安装consul

    1.下载并解压consul # cd /opt/ # mkdir consul # chmod 777 consul #cd consul #wget https://releases.hashico ...

  10. PAT A1147 Heaps (30 分)——完全二叉树,层序遍历,后序遍历

    In computer science, a heap is a specialized tree-based data structure that satisfies the heap prope ...