frp 是一个使用 Go 语言开发的高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、HTTP、HTTPS等协议类型,并且支持 Web 服务根据域名进行路由转发。
frp 原理
frp 是典型的 C/S 架构,基本原理如下图:

要使用 frp 需要一个外网服务器(做server), 内网服务器(做client)。
本文使用阿里云(外网),内网服务器使用树莓派(小小的身体,大大的梦想😝)。
配置
这里贴一下本人配置,使用版本:https://github.com/fatedier/frp/releases/tag/v0.22.0
公网服务器
nginx
通过80端口转发
1
2
3
4
5
6
7
8
9
10
11
|
server {
listen 80;
server_name pi.mango.im;
location / {
proxy_pass http://localhost:9090;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
}
|
frps
配置子域名为pi
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[common]
bind_port = 7000
dashboard_port = 7500
token = token_str
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 9090
subdomain_host = mango.im
[pi]
type = http
auth_token = token_str
subdomain = pi
|
内网服务器
frpc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[common]
server_addr = 公网IP
server_port = 7000
token = token_str
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[pi]
type = http
local_port = 80
subdomain = pi
|
访问:http://pi.mango.im/,虽然有网络波动,但速度还不错!
SSH 连接到树莓派:ssh pi@公网IP -p 6000
参考