使用X-Accel-Redirect让Nginx做内部重定向
有时候我们有对请求拦截的需求,比如做log、做权限校验等等,那X-Accel-Redirect可以让Nginx帮我们做到。
比如我们可以有一个项目专门负责权限处理,请求过来后,只有符合权限的,才会被转发到真实地址。
或者是我们想配置Nginx作为下载服务器,但是真实地址不想被外部知道,也可以使用X-Accel。
示例
下面有两份示例代码
- 一份是Nginx的配置,来达到内部重定向的效果;
- 一份是简单的Server代码,接受http请求。
Nginx配置
1 | server { |
Server端
1 | const Koa = require('koa'); |
效果
在Nginx的配置中,我们对/internal开头的请求,做了internal
标识,外部是没办法直接访问到的。
对于GET /internal/request
的这个请求,只能通过/api/request
请求到达后,Nginx做内部重定向。
直接访问/internal/request
,会得到Nginx的404结果。
相关代码与配置放在github上here。
其他相关头部
上面我们是用了X-Accel-Redirect
,关于X-Accel还有几个其他头部参数可以设置,比如编码类型charset,过期时间等,具体可以参考X-Accel。
- 本文链接:https://keepmoving.ren/nginx/x-accel-redirect-with-nginx/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!