定义
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
下载
访问GitHub地址,选择你系统的软件。一般会下载两个,一个是服务端的(服务器一般是Linux的,所以下载linux_amd64即可),一个是客户端的(我的是Windows的,所以下载windows_amd64)。
- 服务端:*linux_amd64.tar.gz
- 客户端:*windows_amd64.zip
服务端设置
先下载软件,随便放到某个目录中。鉴于GitHub的访问速度,此处使用了代理进行下载。
sudo wget https://ghproxy.com/https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
解压后,进入目录,文件目录如下:
-rwxr-xr-x 1 1001 121 11M Jul 11 00:15 frpc
-rw-r--r-- 1 1001 121 11K Jul 11 00:19 frpc_full.ini
-rw-r--r-- 1 1001 121 126 Jul 11 00:19 frpc.ini
-rwxr-xr-x 1 1001 121 14M Jul 11 00:15 frps
-rw-r--r-- 1 1001 121 5.6K Jul 11 00:19 frps_full.ini
-rw-r--r-- 1 1001 121 47 Aug 19 15:21 frps.ini
-rw-r--r-- 1 1001 121 12K Jul 11 00:19 LICENSE
frpc
是客户端相关的,frps
是服务端相关的。
编辑frps.ini
- bind_port:frp运行时使用的端口
- vhost_http_port:监听http请求的端口
[common]
bind_port = 7000
vhost_http_port = 8080
运行frps
./frps -c ./frps.ini
客户端设置
编辑frpc.ini
- server_addr:服务器的公网IP
- server_port:服务器上frp的端口,与
frps.ini
中的bind_port
保持一致 - local_port:本地项目的端口,比如你正在开发的Vite项目的
5173
端口 - custom_domains:自定义域名(需要将该域名解析到服务器的公网IP)
[common]
server_addr = 150.158.84.100
server_port = 7000
# 可配置多个web
[web]
type = http
local_port = 5173
custom_domains = www.yourdomain.com
运行frpc
./frpc -c ./frps.ini
解析域名
我们在frpc.ini
中配置了custom_domains
,目前访问该域名不会有任何结果,还需要去域名服务商处将该域名解析到服务器的公网IP上。
到此,访问www.yourdomain.com:8080
就会访问到本地的5173
端口,即访问localhost:5173
。
配置Nginx
可以通过Nginx的反向代理隐藏:8080
进行访问。
server {
listen 80;
server_name www.yourdomain.com;
location / {
proxy_pass http://www.yourdomain.com:8080;
}
}
至于如何使用Supervisor为frp添加守护进程,使其可以后台执行,大家可参考进程管理器 Supervisor 的安装和使用。内网穿透的使用场景还挺多的,比如开发微信小程序;比如某个项目还未开发完成,领导说现在就要在公网上看到(SB);再比如你有个树莓派...