来自 DB 的路由用于 nginx 反向代理

Routes from DB for nginx reverse proxy

Nginx反向代理如何从外部源获取路由数据?

项目有多个外部文件存储。遗留代码具有以下工作流程:

  1. 文件请求到达 RoR 控制器
  2. RoR 从模型 (Postgres) 获取外部文件名
  3. RoR 从外部源获取文件内容,returns 它

这是一个非常糟糕的概念,所以我想将此逻辑更改为:

  1. 文件请求来到nginx
  2. Nginx 从一些 service/script 获取外部文件名,它具有数据库访问权限
  3. Nginx 通过来自 (2) 的文件名代理来自外部源的文件

所以,问题是如何从nginx中获取存储在postgres中的文件名?我想,通过对本地主机的 http 请求获取它是可以的,但是如何在 nginx 配置中执行此操作?

这是一个糟糕的概念。好的概念是

  1. 文件请求来到nginx
  2. nginx 传递给 RoR
  3. RoR 从模型 (Postgres) 获取外部文件名
  4. RoR 通过 X-Accel-Redirect
  5. 传递 nginx 新 URI
  6. nginx 提供文件。

http://wiki.nginx.org/XSendfile