Serv00 注册门槛并不高,所以全民几乎人手一个,更有 s1-15 全程参与的。作者为了演示需要,注册过几个 serv00 账号,除当期演示外一直闲置,弃之可惜、食之无味。对于同样持有吃灰 serv00 账户的小伙伴,我们不妨将 serv00 利用起来,搭建站点代理自用或者在小范围内分享,有多个账号的可以建代理池,获得更好的使用体验。本文概要复现 serv00 搭建 siteproxy 的方法和过程,详细操作过程及注意事项参考「视频分享」。Serv00 默认支持 php、node.js,且可指定版本,开源空间既有支持 nodejs 的,也有支持 php 的,因此,siteproxy 的搭建理论上支持所有主机空间。
站点代理(Site Proxy)类开源项目也有很多,多基于 node.js、php 等,仅"代理" http(s) 流量,主要用于网站浏览、访问。对于大多数人来说,上网就是用浏览器访问网站。互联网上,本就有大量的站点代理类网站存在,既有收费的,也有免费的。Site Proxy 的优势是不需要安装额外的客户端软件,有浏览器就能使用,前提是网站代理服务的宿主域名没有被阻断。网站代理站点(Site Proxy)的工作原理就是劫持 https 请求,和很多恶意软件一样,区别在于用户主动要求站点劫持,而恶意软件则在用户不知情的情况下劫持。
所以,同样的技术,可以有不同的用途,也因为同样的原因,使用此类站点(Site Proxy)服务应该自建。
Serv00 面板中,主要涉及三项操作,分别是:
1.添加可用端口,siteproxy 使用 tcp,应添加 tcp 端口。
2.激活第三方程序运行权限。通常情况下 php、node.js 程序并不需要额外激活权限,但 serv00 主机上经常会出现未激活权限导致 php、node.js 程序提示“permission deny”的问题,因此建议一律激活。
3.添加 proxy 站点。可以使用 serv00 为每一个用户默认分配的 xxxx.serv00.net 子域名及相应站点,但本文所用 siteproxy 尚不能自动适配,因此建议使用自有域名并提前添加 A 记录指向 serv00 分配的 IP 地址。
在添加站点时,应打开高级设置(『Advanced settings』),站点类型(『Website type』)选择 『Proxy』,代理端口(『Proxy port』)选择添加的、未被占用的端口。
站点添加完成之后,应为添加的站点配置 SSL,即添加证书。无论是添加 A 记录还是添加证书,都是在『Manage SSL Certificate』选项卡下进行。
配置证书选项卡下,点击 A 记录指向 IP 所在行右端的『Manage』,依照提示即可申请并配置好 Let's encypt 的免费证书。
配置 A 记录并开启 Cloudflare 代理
本文使用的示例是使用 siteproxy 项目,该项目使用了 cloudflare 网络,通常部署为 cloudflare wokers 或 pages。因此,我们在配置自定义域名 A 记录指向 serv00 IP 地址时,务必打开代理。
通过 SSH 登录 serv00主机,使用以下命令拉取仓库至指定目录下、赋权、编辑配置文件。应将 your_domanin_name 修改为实际使用的域名。
cd ~/domains/your_domanin_name/public_html/
git clone https://github.com/netptop/siteproxy.git
cd siteproxy
chmod +x * #可仅对js文件赋权
nano config.json
对 config.json 文件内容进行修改,token_prefix 就是访问路径,作为访问控制手段。local_listen_port 则为开放的 tcp 端口。
{
"proxy_url": "https://your-domain-name",
"token_prefix": "/123456/",
"local_listen_port": 21443,
"description": "注意:token_prefix相当于网站密码,请谨慎设置。 proxy_url和token_prefix合起来就是访问网址。"
}
修改完成之后使用 node bundle.js 命令启动服务。
服务正常启动后,就可以打开浏览器使用 https://your-domain-name 访问搭建的网站代理站点了,在代理站点页面输入想要访问的网站如 google、youtube、reddit 等,就可以自动在新标签页中打开相应站点,在地址栏,我们可以观察到的 url 形式类似 https://your-domain-name/https/www.google.com。
为了确保 node 进程持久化运行,可以使用 screen、nohup 等将其在后台运行的方式,或者使用 pm2 等工具守护。但 serv00 对很多具有明显特征的进程很不友好,为了不被杀死或杀死后能够迅速重新启动,可以使用面板中可配置的 cron jobs 定时任务来完成。每一个时间周期都为『Each time』,执行命令就是 node bundle.js。
cd ~/domains/your-domain-name/public_html/siteproxy && node bundle.js
如果定时任务运行失败,因为 node 进程一般不会被 serv00 屏蔽,应检查、编辑递归权限。配置无误的情况下,serv00 主机上出现的 “permission denied”,很可能只需要通过 “chmod -R 755 *” 解决。
多数人能上网浏览一些非视频内容基本就能满足大多数的需求,比如读文章、看新闻等等,这时候使用自建的 siteproxy 完全可以满足需求。当然,对本文使用的项目默认页面的内容有不满意的或者希望自定义布局和风格的,可以自行修改其中的 cf_www.netptop.com_worker.js 文件。在此基础上,可以结合实际情况进一步配置部署:
1.有多台 serv00 主机的,可以额外配置轮询
2.可以优选 cloudflare 对端加速国内访问