问题是这样,现在有
站点 x (受控制)、站点 a b c (不在我控制)
要求:
- 访问站点 x 的 /a/* -> x 判断是否存在 /a/* -> 是则直接返回,否则回源 a 抓取 /* 并返回
- 访问站点 x 的 /b/* -> x 判断是否存在 /b/* -> 是则直接返回,否则回源 b 抓取 /* 并返回
- c 同理
( x 上的文件可能与源不同,并且回源抓取后 x 不保存文件)
仅仅以上简单的判断是否存在的话,用 nginx 的 rewrite/try_files 和 proxy_pass 实现了
现在要求“判断是否存在”这一步后更改为:
根据客户端的 cookie/session 进行判定(可能进行数据库查询)
->
如果符合条件,则根据 cookie/session 返回 x 上的不同版本
如果不符合条件,则回源抓取并返回
这样只用 nginx 配置不行了吧。。
试着用 rewrite + php 实现了一个,效果不佳(对 http 协议部分处理不如现成的 proxy 模块完善)
有没有办法 判定要回源时 再移交回 nginx 的 proxy 模块 处理?
或者 各位 V 友有什么好的实现方案?
(最好不要用 HTTP 重定向而是直接返回 200+内容,因为访问 x 的 client 也不在我控制,并且处理不太完善,可能不会处理重定向)