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

-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的配置文件如下:

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服务,还能靠服务商的安全策略额外增加了很多的防护,这也是白嫖的功能呀!