X-Accel-Redirect
这篇博客来源于团队最近的项目方案。团队最近接了一些合作项目,合作项目免不了要加密/解密、加签/解签来保证基本的信息安全。以前,业务团队是有一套标准的算法供合作方接入,不过难免有些合作项目要按对方的标准来接入。
- 方案一:业务团队都是针对合作方开发,定制接口;
- 方案二:架一个适配层系统,将业务解放出来。
方案一对业务系统侵入大,而且开发、维护成本高,方案二比较好。但是适配层系统如何将请求转发到业务系统?nginx提供的内部重定向(X-Accel-Redirect)机制是一个比较好的方式。适配层系统在处理完特殊的解签后,在response里加一个header(X-Accel-Redirect)指定请求转发的路径(业务标准实现的路径),nginx收到响应报文不会返回给客户端,而是从指定的业务路径中请求内容返回客户端。
用了X-Accel-Redirect机制以后,对外合作项目的请求到达业务系统已经是标准的结构了。请求路径如下:
为什么用内部重定向而不直接用重定向,内部重定向有以下几点优势:
- 用户感觉不到跳转;
- 业务标准的路径不用暴露;
- 少一次网络请求。
举例
写两个接口(/focuse/hello、/focuse/hello2),其中/focuse/hello返回时设置"Accel-Redirect=/focuse/hello2"。我们请

本文介绍了一种利用X-Accel-Redirect机制进行内部重定向的方法,该方法可使适配层系统在处理特殊请求后,通过在响应头中添加X-Accel-Redirect字段,指示Nginx从指定的业务路径中请求内容返回给客户端,从而避免了直接暴露业务路径,减少网络请求,提升用户体验。
最低0.47元/天 解锁文章
1243





