nginx X-Accel介绍
May 1, 2018
背景
项目需要,提供一个对外的文件下载服务,详细需求点如下:
- 需要对接多个客户
- 各个客户要求的数据格式不同,内容不同
- 客户间权限隔离
- 文件可能较大
方案
文件下载的第一方案自然想到了nginx,ip、流量控制等nginx都只要配置就可以实现,但似乎无法做好各个客户间的权限隔离(当然localtion隔离也可以,但维护成本比较大)。搜索之后了解到了nginx的X-Accel
X-accel allows for internal redirection to a location determined by a header returned from a backend.
X-Accel比较特殊的地方是利用upstream返回的头部信息进行对应处理。常见的配置方式如下:
Loading...
注意interval保证了文件不能直接被外部访问,只能用于内部跳转,upstream的返回中通过X-Accel-Redirect指定真实的跳转文件名。
在cgi中我们可以根据实际情况做一些安全检查、验证、统计等。如针对我们的实际场景,校验请求方ip、签名是否有效,可以对每家客户做到权限的隔离。
See all postsSee all posts