部署frp服务器发布内网服务并获取免费ssl证书
部署frp服务器发布内网服务并获取免费ssl证书
本文适用对象
- 不想花冤枉钱搭建一个自己的服务器
- 能够在本地搭建好服务并且能够通过
localhost
访问 - 有一台可以访问互联网的服务器 (例如腾讯云、阿里云)(如果没有建议花点小钱买一个)
- 有一个自己的域名(必需品,可以在各种云上买到,记得备案哦)
云端搭建frps服务
基础配置
这里建议云服务器安装linux系统,操作更简单
到frp github发布页找到对应的架构,右键复制链接地址
在云服务器上执行(这里以amd64为例)
1 | wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz |
下载完成后解压
1 | tar -zxvf frp_0.51.3_linux_amd64.tar.gz |
然后进入解压后的文件夹,修改配置文件 frps.ini
,在里面输入一下内容:
1 | [common] |
记得修改 your_token
,user_name
,your_password
为自己的相关信息,注意token和password要长一点,保密性能更好,然后保存退出。
如果你对于安全性有更高的要求,可以把端口也自定义一下
配置systemd启动服务
参考文章:frp官网示例
没什么坑所以跳过,在完成之后使用命令
1 | sudo systemctl status frps.service |
查看一下服务状态,如果是active(running)就说明启动成功了
开放云服务器对应端口
记得去云服务器的控制面板修改防火墙设置,把你上面配置的端口bind_port
、vhost_http_port
、vhost_https_port
、dashboard_port
都开放出来,不然外网是访问不了的
开放完之后可以考虑用本地的浏览器访问一下 http://你的云服务器ip:dashboard_port
(注意,这里要把你的dashboard_port换成你自己填的值) ,如果能够正常访问就说明配置成功了
使用let’s encrypt申请证书
这里不建议在windows下面运行certbot,建议在windows下面运行
如果你是ubuntu系统,参考官网教程certbot官网教程安装
其他的系统也可以在官网找到相关命令
然后运行命令
1 | sudo certbot certonly -d your_domain --manual --preferred-challenges dns |
回车之后输入对应的信息,然后会提示你添加一条txt记录到你的域名解析里面(添加的时候记得类型为txt),添加完之后等待一会儿,然后回车,如果成功了就会在 /etc/letsencrypt/live/your_domain/
下面生成证书文件
本地搭建frpc服务
同理,在本地下载对应架构的frp软件包,解压,此处以windows为例windows下载地址
建议在解压完之后的文件夹里面新建一个文件夹,用来存放证书文件
把上一步生成的证书文件复制到文件夹下面,注意,虽然生效的证书在 /etc/letsencrypt/live/your_domain/
下面,但是那里面的文件只是一个软链接,所以要把软链接指向的文件复制过来,不要复制软链接,查看指向的文件的方式ls -l
解压后进入文件夹,修改配置文件 frpc.ini
,在里面输入一下内容:
1 | [common] |
然后用命令行运行 ./frpc.exe -c frpc.ini
,如果没有报错就说明配置成功了
向域名添加解析
在控制面板添加一个指向你云服务器地址的解析,类型为a,主机记录自己看着办
在浏览器里面测试一下就完结撒花咯
错误排查
- 如果你的隧道启动成功,本地服务也正常,但是显示502错误或者重定向错误,可能是你的域名没有备案,运营商ban了你的80端口或者443端口,你可以考虑先把端口改掉,改成8080之类的,然后再访问。正规解决方案是去备案,这里就不做过多介绍了