Yuhang Zheng

使用樱花FRP的建站体验

N 人看过

在之前的文章中,就记录过自己的网站从ftp转到了使用Nginx反向代理来解决家用宽带封禁80和443端口的问题,详见文章【增加Memos备忘录功能以及由frp穿透转为nginx反向代理】。没想到半年之后,我又要回归frp的怀抱了呀!

1、背景

先说说原因吧,其中最大的原因是我的Nginx反向代理服务器使用的是香港的一个实例,众所周知的原因,虽然它本身的上传带宽有30Mbps,但是国内访问速度要慢很多,所以就导致打开博客的时候总是要稍微等一会。

还有就是不知道是不是Ngnix反向代理配置的问题,如果我树莓派上的网站服务重启了,或者是IP改变了,就必须也要重启一下反向代理的服务器,不然就会报502错误。

再有就是因为是家用宽带因为使用了DDNS的缘故,所以总有那么一段时间IP变化了,但是还没有更新到域名上,导致博客总是会离线一段时间。

总而言之吧,就有回想起来当时使用frp的好。

但是如果还是在我的香港的那个实例上部署frp,那么第一个访问慢的问题还是无法解决,这个时候我看到了一个免费的frp的服务商【SAKURA FRP】

2、资源评估

首先是看一下樱花FRP免费版能使用的带宽和流量吧

image-20240424155904903

image-20240424160714403

可用两条隧道,带宽10M,一条隧道能绑定三个域名,每月流量5G,并且还可以通过每天签到获得流量。考虑到自己的博客也就是搭着玩个人用,而且也没有媒体服务,也没有上传下载的需求,所以这个完全可以满足使用啦!

话说回来,10M的带宽看起来小,但是对于建站来说已经是大水管啦!毕竟公司的知识分享博客带宽也才8M,腾讯云99一年的服务器才给3M,相比较之下这个香的不是一点半点。

只不过想要使用樱花FRP来做建站的话,自己的域名需要进行一下备案,现在的备案比之前复杂多了,还需要一个备案的服务码,这个我直接管我一个有云服务器的同事要了一个……

备案也比较顺利,大约二十来天就备案完成了,那么接下来,搞起!

3、Nginx配置修改

因为之前使用Nginx反向代理服务器的方式,所以我的树莓派上的各项服务还是用docker提供的端口的方式来暴露到公网上面的,博客也是开了一个8081端口映射到了公网上,这就导致网站服务的端口太多。如果做frp映射的话,还是要想办法把它们按照协议回归到各自的80端口和443端口上。

不过这个也很容易,还是按照之前Nginx反向代理服务器的配置文件,稍加修改就可以啦!

/etc/nginx/conf.d目录下分为以下几个config

1
2
3
4
5
-rw-r--r-- 1 root root  332 Apr 22 15:20 gpt.resona.top.conf
-rw-r--r-- 1 root root 716 Apr 22 15:21 memos.resona.top.conf
-rw-r--r-- 1 root root 333 Apr 22 15:21 net.resona.top.conf
-rw-r--r-- 1 root root 515 Apr 22 15:22 pan.resona.top.conf
-rw-r--r-- 1 root root 1391 Apr 22 15:28 resona.top.conf

主站resona.top.conf的配置文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
server {
listen 80 default_server;
listen [::]:80 default_server;

server_name resona.top;

root /NGINX-ROOT-PATH/;
index index.php index.html index.htm index.nginx-debian.html;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

location ~ .*\.php(\/.*)*$ {
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}

}

server {
listen 443 ssl;

server_name resona.top;

client_max_body_size 1024m;

root /NGINX-ROOT-PATH/;
index index.php index.html index.htm;

ssl_certificate /etc/nginx_key/resona.top_bundle.pem;
ssl_certificate_key /etc/nginx_key/resona.top.key;

ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}

location ~ .*\.php(\/.*)*$ {
#NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
include fastcgi_params;
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
}

其他的配置文件见之前的博客里面的记录啦,基本上一样,只不过把proxy_pass的地址改为http://127.0.0.1而已。

4、隧道配置

搞好了这些,那么接下里就是隧道的配置,这个就简单很多了,按照协议的区别将对应的域名分配到不同的隧道里面。

image-20240424162822780

5、域名解析

再接下来就是域名解析,将我们的四个域名使用CNAME映射到节点的域名上面,这样我们访问我们域名的时候就可以使用樱花的frp服务了。

6、FRP,启动!

最后一步,按照樱花frp服务的帮助文档,下载它的客户端到树莓派上,按照SakuraFrp 启动器的安装使用指南直接启动就可以啦!

最终部署完成之后,访问博客感觉速度快了很多,这才是hexo博客全静态页面建站真正的体验啊!另外使用了樱花frp服务,还能靠服务商的安全策略额外增加了很多的防护,这也是白嫖的功能呀!