愿景:实现外网访问内网服务器

前端圈子混了好几年,在大佬的种草下,买了一台树莓派4b 8g的设备,不知天高地厚的踏入了后端圈子

上周使用docker搭建了一个nuxt项目,想着如何使用外网能访问到自己的服务呢,一开始使用的花生壳,完成了内网穿透,能通过随机分配的域名,访问自己的服务;

后来了解到有开源的frp,何不试试,于是开始了各种踩坑,最终还是实现了,在此记录下自己的成长

搭建frp及服务注册(服务端与客户端)_内网穿透

(目前板子上插了一个SIM7600的4G全网通扩展,实现的项目后续会再发博文)

frp简介

frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。

相关概念可看官网FRP

安装环境

  1. 一台拥有公网IP的服务器(阿里云)作为服务端
  2. 一台树莓派作为客户端
  3. 系统与frp版本
Server:amd64、frp_0.34.2_linux_amd64
Client:arm、frp_0.34.3_linux_arm

操作步骤

下载包-https://github.com/fatedier/frp/releases/tag/v0.34.2

客户端

1.解压包,把如下文件放置/etc/frp 目录下

搭建frp及服务注册(服务端与客户端)_服务端_02

注意:如果这里不新建frp目录,那么就需要修改frpc.service 文件下的 ExecStart和ExecReload 指向,查看下标题3

搭建frp及服务注册(服务端与客户端)_linux_03

2.修改frpc.ini文件

[common]
server_addr = xx.xx.xx.xx(公网ip)
server_port = 20084
token = 123456

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

[web1]
type = http
local_port = 8001
remote_port = 5000
custom_domains = xx.xx.xx.xx(公网ip或者域名)

[web2]
type = http
local_port = 8000
remote_port = 5000
custom_domains = xx.xx.xx.xx(公网ip或者域名)

3.把systemd文件夹下的frpc.service,放到/etc/systemd/system下

设置权限 sudo chmod 754 frp*.service
设置开机启动即可 sudo systemctl enable frp*.service

搭建frp及服务注册(服务端与客户端)_内网穿透_04

4.在/etc/frp目录下执行如下命令

cp frpc /usr/bin
chmod +x /usr/bin/frpc
systemctl start frpc
ps -ef|grep frpc

客户端结束


服务端

搭建frp及服务注册(服务端与客户端)_客户端_05

1.解压包,把如下文件放置/etc/frp 目录下

搭建frp及服务注册(服务端与客户端)_客户端_06

2.修改frps.ini文件

[common]

bind_port = 20084
vhost_http_port = 5000
token = 123456

3.把systemd文件夹下的frps.service,放到/etc/systemd/system下

设置权限 chmod 754 frp*.service
设置开机启动即可 systemctl enable frp*.service

搭建frp及服务注册(服务端与客户端)_linux_07

4.在/etc/frp目录下执行如下命令

cp frps /usr/bin
chmod +x /usr/bin/frps
systemctl start frps
ps -ef|grep frps

到此,完成内网穿透及frp服务注册。

如果使用的是阿里云服务器,得配置好安全组

搭建frp及服务注册(服务端与客户端)_内网穿透_08

由于我的树莓派上起了七八个服务,服务端需要使用nginx做反向代理

这里可参考我的另一篇博客nginx安装及反向代理-可和FRP搭配使用

如有问题请留言,看到会第一时间回复

到此,搭建frp及服务注册(服务端与客户端)-文章结束,原创不易,感谢浏览!