使用樱花FRP的建站体验
在之前的文章中,就记录过自己的网站从ftp转到了使用Nginx反向代理来解决家用宽带封禁80和443端口的问题,详见文章【增加Memos备忘录功能以及由frp穿透转为nginx反向代理】。没想到半年之后,我又要回归frp的怀抱了呀!
1、背景
先说说原因吧,其中最大的原因是我的Nginx反向代理服务器使用的是香港的一个实例,众所周知的原因,虽然它本身的上传带宽有30Mbps,但是国内访问速度要慢很多,所以就导致打开博客的时候总是要稍微等一会。
还有就是不知道是不是Ngnix反向代理配置的问题,如果我树莓派上的网站服务重启了,或者是IP改变了,就必须也要重启一下反向代理的服务器,不然就会报502错误。
再有就是因为是家用宽带因为使用了DDNS的缘故,所以总有那么一段时间IP变化了,但是还没有更新到域名上,导致博客总是会离线一段时间。
总而言之吧,就有回想起来当时使用frp的好。
但是如果还是在我的香港的那个实例上部署frp,那么第一个访问慢的问题还是无法解决,这个时候我看到了一个免费的frp的服务商【SAKURA FRP】。
2、资源评估
首先是看一下樱花FRP免费版能使用的带宽和流量吧
可用两条隧道,带宽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、隧道配置
搞好了这些,那么接下里就是隧道的配置,这个就简单很多了,按照协议的区别将对应的域名分配到不同的隧道里面。
5、域名解析
再接下来就是域名解析,将我们的四个域名使用CNAME映射到节点的域名上面,这样我们访问我们域名的时候就可以使用樱花的frp服务了。
6、FRP,启动!
最后一步,按照樱花frp服务的帮助文档,下载它的客户端到树莓派上,按照SakuraFrp 启动器的安装使用指南直接启动就可以啦!
最终部署完成之后,访问博客感觉速度快了很多,这才是hexo博客全静态页面建站真正的体验啊!另外使用了樱花frp服务,还能靠服务商的安全策略额外增加了很多的防护,这也是白嫖的功能呀!