Fork me on GitHub

frp内网穿透

开发经常需要公网调试环境,比如支付宝,微信支付等各种回调测试。 也有远程办公的需求,这时就可以使用frp一起搞定。

gofrp官网 https://gofrp.org/

Github下载地址 https://github.com/fatedier/frp/releases/

配置frp服务端

下载并解压frp

1
2
3
wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_arm64.tar.gz -o frp.tar.gz
tar -xfvz frp.tar.gz /usr/local/frp
cd /usr/local/frp

使用编辑器修改 frps.ini 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[common]
# frp服务器连接端口,根据情况修改
bind_port=9200
# 服务器绑定 http 端口,需要http内网穿透时配置
vhost_http_port=8080
# frp客户端连接时需要,保护服务的安全。推荐随机生成一个字符串
token=123456

# frp自带web管理面板 不需要下面3项可不配置
# web端口
dashboard_port=9201
# web登录用户名
dashboard_user=user
# web登录密码
dashboard_pwd=pwd

配置文件修改后,使用下面命令启动服务端

1
./frps -c frps.ini 

配置frp service(开机启动功能)

1
vim /etc/systemd/system/frps.service

写入如下配置

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target

[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /usr/local/frp/frps -c /usr/local/frp/frps.ini

[Install]
WantedBy = multi-user.target

启动,重载,添加服务开机启动

1
2
3
4
5
6
7
8
# 重载服务
systemctl daemon-reload

# 设置开机启动 frps对应服务名
systemctl enable frps

# 启动服务 frps对应服务名
service frps start

配置frp客户端

客户端使用 Windows 进行演示,下载并解压软件后,修改软件根目录下 frpc.ini 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[common]
# 服务器IP
server_addr = server_ip
# 服务器frp端口
server_port = 9200
# token
token=server_token

# []内名称可以随意修改,远程桌面连接配置
[remote-desktop]
# 穿透协议
type = tcp
# 本地ip 默认是127.0.0.1 也可修改为内网机器ip
# local_ip = 127.0.0.1
# 监听端口号,远程桌面连接服务端口是3389
local_port = 3389
# 远程端口 直接绑定服务器公网端口
remote_port = 19200

# []内名称可以随意修改,http 穿透配置
[web]
# 穿透协议
type = http
# 子域名
# subdomain = web01
# 自定义域名和子域名填写一个即可,用于服务器代理路由
custom_domains = dev.test

配置文件保存后使用 cmd 进入软件目录,使用下面命令启动服务

1
frpc.exe -c frpc.ini
远程桌面连接

启动完成后就可以使用 server_ip:19200 地址远程桌面连接到当前主机(需开启系统远程桌面连接功能才可以正常使用,如未开启则无法连接

http穿透

使用 dev.test:8080 域名可以访问到对应的内网项目(需要该域名解析到服务器方可访问)。如需配置https,可使用Nginx反向代理,可关闭8080端口的公网访问权限

Nginx反向代理

主机配置和ssl证书等不做演示,下面放出反向代理规则

1
2
3
4
5
6
7
8
location ^~ /
{
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
}

使用本地IP和对应端口号即可

更多用法可以参考 gofrp官网

请我喝杯咖啡吧~

支付宝
微信