目录
引言
在国内特殊网络环境下,科学上网是必备的技能和工具。然而有些时候,受限于电脑和网络环境(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,成本很高。
本作品使用基于以下许可授权:Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.