问题是这样,现在有
站点 x (受控制)、站点 a 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 也不在我控制,并且处理不太完善,可能不会处理重定向)
1
ryd994 2015-10-05 16:28:55 +08:00 1
反代放到 named location 里( location @xxx )
location /a/ 设置 error_page 403 到反代 location , fastcgi_intercept_errors on PHP 判断不符合条件就返回 403 你也可以使用其他 errorcode |
2
msg7086 2015-10-06 02:01:04 +08:00
nginx 当然要用 lua 大法。
|
3
aprikyblue OP |
4
ryd994 2015-10-06 21:14:27 +08:00 via Android
@aprikyblue 那就使用其他数字, 4 开头 5 开头的都可以啊
|
5
msg7086 2015-10-06 21:19:03 +08:00
@aprikyblue openresty ,可以访问 cookie/session/数据库,你可以看看能不能满足你的要求。
|