Skip to content

FRP上手教程

Published: at 10:47 AM

前言

最近把在角落里吃灰的树莓派拿了出来,搭建了一个 wordpress 网站,感觉还不错,不过因为连的是家里的 WiFi,所以只能内网访问,所以就准备用内网穿透工具配置一下外网访问。之前内网穿透都是用的 Cloudflare 的 tunnel,免费,配置很简单,而且直接上自家的 CDN 网络,但是由于众所周知的原因,Cloudflare 的服务在国内访问速度感人,但是勉强还能用。不过最近在 Github 上的 Trending 里看到了这个frp,看了一下文档,发现这个工具配置起来超简单,刚好有台服务器,所以就直接上手了。

个人配置

Client: Raspberrypi 4B + Ubuntu 20.04

Server: Ubuntu 20.04

安装配置 frp

服务器端配置

下载解压 frp 文件,注意安装包的架构:

wget https://github.com/fatedier/frp/releases/download/v0.46.1/frp_0.46.1_linux_amd64.tar.gz

tar zxvf frp_0.46.1_linux_amd64.tar.gz

cd frp_0.46.1_linux_arm64/

配置流程稍稍与客户端配置不同,但是更简单,只需要编辑frps.ini配置文件,设置监听 HTTP 请求端口,这里我使用的 8080 端口:

[common]
bind_port = 7000 # frp服务的监听端口
vhost_http_port = 8080

p.s. 不要忘记开放服务器的防火墙端口。

客户端配置

下载解压 frp 文件,因为我用的是树莓派,所以下载 arm64 的包:

wget https://github.com/fatedier/frp/releases/download/v0.46.1/frp_0.46.1_linux_arm64.tar.gz

tar zxvf frp_0.46.1_linux_arm64.tar.gz

编辑frpc.ini配置文件,设置服务器的 IP 地址a.b.c.d及本地机器上 Web 服务监听的端口,并绑定自定义域名:

[common]
server_addr = a.b.c.d
server_port = 7000

[web]
type = http
local_port = 3000
custom_domains = www.yourdomain.com #这里设置域名

到这里就可以使用了,分别启动服务端和客户端即可。

# 服务端
./frps -c ./frps.ini

# 客户端
./frpc -c ./frpc.ini

通过http://www.yourdomain.com即可访问 web 服务。p.s. 不要忘记将www.yourdomain.com的域名 A 记录映射到服务器的 IP。

Caddy 配置

不过因为我的服务器上还部署了其他的 web 服务,使用了 caddy 进行反向代理,所以还需要一点额外的配置。编辑 caddy 的配置文件/etc/caddy/Caddyfile,添加新域名的反向代理:

www.yourdomain.com {
	reverse_proxy localhost:8080
}

重新启动 caddy 服务:

sudo systemctl restart caddy

现在就可以通过https://www.yourdomain.com访问内网的 web 服务了,而且 Auto HTTPS!!

参考

https://github.com/fatedier/frp/

https://gofrp.org/docs/