本帖最后由 ysmintor 于 2020-5-11 22:29 编辑
想反代 oneindex 的下载地址 xxx-my.sharepoint.com->cdn.aaa.com,在反代配置的地方用了 sub_filter ,但下午的文件链接还是 xxx-my.sharepoint.com 开头,没效果。麻烦大佬看下。
我为什么要这样反代?当然是加速,国内走的 cdn(nginx 反代做的 cdn),国际仍然是走 xxxx-my.sharepoint.com,只加速国内的,方便别人下载,国际线路仍然利用 onedrive 的带宽!
不想在 oneindex 把下载链接替换写死,这样不方便以后换 CDN,国内和国际的下载要做区分,当然代码也能做到,我觉得要用 ip 判断麻烦。
Updated:
感谢大佬提醒,对于302要采用 proxy_redirect 修改。搞了一下午,nginx 的正则匹配开始不匹配上,还以为不对,又是查官网,又用 firefox 调试,确定 oneindex 跳转后下载链接是放在 Location 里。
这是我的处理办法。cdn.AAAA.com (nginx 反代做的 cdn)反向代理 xxxx-my.sharepoint.com。
- proxy_redirect ~^(http[s]?)://xxxx-my.sharepoint.com(/.+)$ $1://cdn.AAAAA.com$2;
同时,对于 Cloudreve 用了 oneindex,下载资源时没有302,点击请求是一个 put请求,有点怪。
用 sub_filter 能解决。
- proxy_set_header Accept-Encoding "";
- sub_filter_types *;
- sub_filter_once off;
- sub_filter 'xxxx-my.sharepoint.com' 'cdn.AAAA.com';
引用: #PROXY-START/
location ~* \.(php|jsp|cgi|asp|aspx)$
{
proxy_set_header Accept-Encoding "";
proxy_pass https://od.aaaa.com;
proxy_set_header Host od.aaaa.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
sub_filter "xxx-my.sharepoint.com" "cdn.aaa.com";
sub_filter_once off;
sub_filter_types *;
}
location /
{
proxy_set_header Accept-Encoding "";
proxy_pass https://od.aaa.com;
proxy_set_header Host od2.aaa.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
sub_filter "xxx-my.sharepoint.com" "cdn.aaaa.com";
sub_filter_once off;
sub_filter_types *;
#Set Nginx Cache
add_header Cache-Control no-cache;
expires 12h;
}
#PROXY-END/