使用 Nginx + CDN 实现外网文件高速下载

引言

在国内特殊网络环境下,科学上网是必备的技能和工具。然而有些时候,受限于电脑和网络环境(Eg. 非自己的电脑 / 刚装的电脑 / 梯子的网络连接不咋地),我们不方便使用科学上网工具,这时候用 Nginx + CDN 来实现类似于“离线下载”的方式。原理和操作都没有难度,但是还蛮实用的。

原理

非常简单。Nginx 反向代理原 URL,CDN 加速 Nginx 网站。

操作

第一步 新建 Nginx 配置

这里偷懒,使用了 LNMP 一键脚本。

对照修改 http 与 https 的规则。

location ~ ^/(.*)$ {
    resolver 1.1.1.1 8.8.8.8;
    proxy_pass $scheme://$1$is_args$args;
}

不要忘记 Reload Nginx

第二步 测试 Nginx 转发是否正常工作

在URL前部加入 proxy.sst.st(如图),查看是否能够正常下载。

没有奇奇怪怪的错误就说明配置正确。

第三步 配置 CDN

这里使用了又拍云,我比较喜欢的一家 CDN 供应商。

如图,建立对源站的加速。

开启 HTTPS 需要配置好证书,否则 Nginx 配置中需要自己想办法跟随协议,然后仅使用 HTTP 访问(不推荐)。

如果坚持不想配置证书,不想使用HTTPS,这里给出一种解决方案:

location ~ ^/proxy/(.*)$ {
    resolver 1.1.1.1 8.8.8.8;
    proxy_pass http://$1$is_args$args;
}

location ~ ^/proxys/(.*)$ {
    resolver 1.1.1.1 8.8.8.8;
    proxy_pass https://$1$is_args$args;
}

可以配置一个 OSS 来减少回源,减轻服务器压力。

测试CDN是否工作正常。

这样就完成了。

总结

优点:客户端不需要任何软件安装或设置变动。

这种方式目前存在一个缺陷:无身份验证,可能导致 CDN 被滥用。

如果希望在梯子上使用 CDN加速,可以 ws + tls + websocket CDN,成本很高。

CC BY-NC-SA 4.0 本作品使用基于以下许可授权:Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注