在服务停机升级或者服务暂不可用时,往往希望能够返回给用户更为明确和友好的响应信息。可以通过修改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. HCNA网络技术命令

    1.display version 显示系统软件版本及硬件信息 2.system-view 切换到系统视图 3.quit 切换回用户视图 4.return 从任意非用户视图退回到用户视图 5.sysn ...

  2. 为PHP7安装Windows Server 2012 R2过程记录

    因为要安装php-7.0.6-Win32-VC14-x64,需要先安装vcredist2015_x64_14.0.23026.0. 之前安装了Windows Server 2012 R2后,一直无法成 ...

  3. Java实现对zip和rar文件的解压缩

    通过java实现对zip和rar文件的解压缩

  4. 菜鸟水平如何在Android Studio中添加uiautomator测试框架

    1.启动AS,弹出创建Android Studio项目 2.选择 "Start a new Android Studio project",输入 application name ...

  5. Nginx SSL TLS部署最佳实践

    本文介绍nginx在提供HTTPS时使用的一些其他配置选项. 虽然这些功能有助于优化nginx的SSL和TLS,但这不是一个完整对加固nginx的介绍. 确保您的服务器安全的最佳方法是不仅需要正确的配 ...

  6. oracle+st_geometry

    最近因为性能的原因开始关注通过oracle和st_geometry直接操作数据库来解决实际业务问题.主要还是用到了“使用 SQL 处理 ST_Geometry”.对此,ESRI给出的帮助文档中的解释如 ...

  7. BSOJ 2423 -- 【PA2014】Final Zarowki

    Description 有n个房间和n盏灯,你需要在每个房间里放入一盏灯.每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照亮.  你可以去附近的商店换新灯泡,商店里所有正整数功率的灯 ...

  8. centos7下安装docker(11容器操作总结)

    这段时间主要是学习了对容器的操作,包括:容器的状态:start,stop,restart,rename,pause,unpause,rm,attach,exec,kill,logs:还学习了对容器的资 ...

  9. linked-list-cycle-ii (数学证明)

    题意:略. 这个题最关键的点在于后面,如何找到循环开始的节点. 第一阶段,先用快慢指针找到相遇的节点C.(至于为什么,了解一下欧几里德拓展解决二元不定方程.)A是表头.B是开始循环的位置. 第一次阶段 ...

  10. UCML 参与者关键 与依赖关联外键