宿舍小主机一直在使用cloudflared进行内网穿透,将服务挂在公网上,但是cloudflared服务在国内的速度属实拉垮。前几天突然想到早期的idc主机分销,看见了香港节点,号称三网全部30ms延迟,这拿来做反向代理,速度不是狠狠得快?

idc主机分销

应该是在初中的时候接触到这个东西,大致原理就是一台宿主机,通过将空间隔离分给每个用户,然后配置好统一的环境,用户上传代码即可跑起来。(当然仅限php)

这些主机分销目前自己了解的来源主要有:自己的服务器、EP分销或类似的产品。EP分销相当于别人提供好服务器,并将服务器调用接口的权限卖给你,这样就可以调用接口创建自己的空间搭建服务了。

这些服务器通常会搭建好Nginx/Apache + Mysql + PHP环境供用户使用,面板大概是Kangle和EasyPanel,再就是后面Young小杰出的宝塔分销面板。

这些主机大概都非常便宜,一般就几块钱一个月甚至一年,之前盛行的时候甚至有免费的ep分销,甚至很多非常好的线路也都是几块钱就有调用权限(一般调用权限是一个月的,但是主机的可用权限可以设置永久,不知道改了没有),但是最近搜了一下,发现没有几家了。又是一个时代的没落。。

好在当时留了几个做这类的群,里面有一个站长甚至当时是小学生还是初中生就开始做这个了,现在已经高中了还在做,真的很难得。

搭建代理

以宝塔面板为例(没试其他面板),将域名绑定到主机,使用Nginx提供的伪静态功能添加反向代理规则。

1
2
3
4
5
location ^~ / {
	# 例如:https://baidu.com
	proxy_pass 网址;
	proxy_ssl_server_name on;
}

将网址改为用cloudflared穿透出来的域名即可。proxy_ssl_server_name on一定要开启,否则会导致服务器和cloudflare握手失败。

SSL证书问题

这算是个大问题,可能会导致串站啊,未开启ssl用https会跳转到其他页面等问题。

申请SSL证书

配置的第一步当然是申请了,为了方便,最好申请一个通配符证书,freessl好像是用不了了。好在找到了另一家JoySSL。

永久免费SSL证书_永久免费https证书_永久免费ssl证书申请-JoySSL

添加一个域名解析,就可以自动申请了。

申请完之后点击下载。

d62fc1fe953c9543cba07fce4d2cc40c.webp

解压后将证书文档/Nginx下的.pem文件内容复制到证书处,.key文件复制到密钥处,点击保存。

c817d588eab55c1b1542557d1acf6aa1.webp

这样基本上你绑定在运行目录下的域名就可以使用https了。(子目录目前还是不行)

解决串站问题

所谓的串站、未开启ssl用https会跳转到其他页面问题,应该是没在宝塔设置默认网站导致的。

而子目录默认不会开启ssl,需要自己手动配置一下。

在伪静态页面配置如下:

1
2
3
4
listen 443 ssl http2;
ssl on;
ssl_certificate /www/server/panel/vhost/cert/yziyf2ya.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/yziyf2ya.com/privkey.pem;

yziyf2ya.com是默认绑定的域名,自己在域名绑定页面查看一下即可。这样就也可以用上你之前保存的证书了。(想要用其他证书应该是不行的,经过尝试,配置内容里面包含wwwroot和root会直接提示检查文件内容,但是你的目录是在wwwroot目录下的,基本上没有啥办法)

DNS解析速度

Cloudflare解析速度:

3d6fa53ecbbd44125603072158016d68.webp

DNSPod解析速度:

2ab8c1ab7fe8978212cd1ce2f2ab4e9e.webp

可以发现DNSPod要好不少,看来平时卡也有dns解析慢的一份功劳。迁回DNSPod的话,得留一个域名在CF,这样就需要两个域名咯。

访问速度

d1f7dfc6e84ef27021004e4ee02d1dbb.webp

在联通网络的情况下优势还是很明显滴,但是校园网好像对cloudflare支持格外友好,没什么差别。

最后的配置

Nginx

1
  location ^~ / {        # 默认规则        set $target_host xxx.taobao.com;        # xxx.baidu.com -> xxx.taobao.com        if ($http_host ~* "^(?<subdomain>\w+)\.baidu\.com$") {            set $target_host $subdomain.taobao.com;        }        proxy_pass https://$target_host;        proxy_ssl_server_name on;    }

Kangle

2024.7.7更新,部分主机是kangle web server,网页性能比宝塔虚拟主机要好不少,写了一个基于kangle web server的规则。(其兼容Apache的规则,和Apache是相同的)

同时还支持代理ws协议,无敌了。

1
RewriteEngine OnRewriteCond %{HTTP_HOST} ^([^.]+)\.baidu\.com$RewriteRule ^(.*)$  https://%1.taobao.com/$1 [P]