今天还好,算是吧frp搞明白了些许,有些时候,一些知识搞不懂, 也许睡醒了就能搞明白了
现在简单记录一下frp的简单使用
frp是什么
简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。我们今天仅讨论TCP和UDP相关的内容。
项目地址:https://github.com/fatedier/frp
其中frps是服务端的配置,frpc是客户端的配置,每个都有三个文件,服务端只保留服务端的三个,客户端只保留客户端的三个即可。
Windows客户端启动方式,打开当前文件夹,输入以下命令
1 | frpc -c ./frpc.ini |
Linux服务端启动方式,打开当前文件夹,输入以下命令
1 | ./frps -c ./frps.ini |
通过ip穿透
这种情况只需要拥有一台服务器就可以了。
服务端配置
1 | [common] |
现在解释一下服务端配置的一些
bind_port
: FRP 服务端或客户端绑定的端口号。服务端用于接收来自客户端的请求,客户端用于连接服务端。(可自定义)dashboard_port
: FRP 的仪表盘(Dashboard)端口号。通过这个端口,您可以使用 Web 界面来查看 FRP 的状态和运行情况。(可自定义)token
: FRP 鉴权的 Token。Token 是客户端连接到服务端时进行验证的凭据,用于确保只有具有正确 Token 的客户端可以连接到服务端。(可自定义)dashboard_user
: FRP 仪表盘v的用户名。(可自定义)dashboard_pwd
: FRP 仪表盘的密码。(可自定义)vhost_http_port
: 虚拟主机 HTTP 端口。如果您启用了虚拟主机功能,这个端口将用于 HTTP 请求。(可自定义)
当然这里我之打开了http端口,如果你还想的话可以打开https,socket,tcp等各种链接的端口,这些都是可以自定义的
客户端配置
1 | [common] |
[common]
部分:server_addr
: FRP 服务端的 IP 地址或域名。server_port
: FRP 服务端的端口号。token
: FRP 鉴权的 Token,与服务端配置中的 Token 要一致。
[web]
部分:type
: 代理类型,这里是 http 类型,用于配置 HTTP 代理。local_ip
: 要代理的本地 IP 地址,这里设置为127.0.0.1
表示代理本地。local_port
: 要代理的本地端口号,这里设置为4000
。remote_port
: 服务端映射的端口号,客户端请求该端口时将被代理到本地的local_port
上。custom_domains
: 自定义域名,这里设置为101.42.5.22
。
其中[web]
可以自定义但是要注意名称不能重复
通过域名穿透
这种情况需要配置好域名,服务器的解析,做好解析后才能开始配置。一些服务器提供厂商的还需要再控制台释放对应端口(比如腾讯云,阿里云)。
服务端配置
1 | [common] |
相同配置不做赘述,这里多出来一个subdomain_host
,在这里subdomain_host
的作用是自定义子域名的主机名。比如我的服务器绑定的域名是twoitmen.club(我解析的时候喜欢用*做解析,一次配置,随便使用)。那我我在这里填写twoitmen.club就可以了。
客户端配置
1 | [common] |
相同配置不做赘述,这里多出来一个subdomain
,在这里subdomain
的作用是子域名,用于标识代理服务。也就是说,我要访问frp.twoitmen.club:6003就是我穿透完毕后的域名地址。
nginx配置
在这里多出来一个nginx配置,它是用来反向代理的,就是省略后面端口号的书写
通过域名穿透的方式的nginx配置
1 |
|
在这里只是多出来一个server,这里简单讲述一下多出来的server配置
listen 80;
: 监听来自端口 80 的 HTTP 请求。server_name frp.twoitmen.club;
: 指定该服务器块的域名为frp.twoitmen.club
。location / { ... }
: 这是一个代理规则,它会将来自/
路径的请求转发到http://frp.twoitmen.club:6003/
上。proxy_pass http://frp.twoitmen.club:6003/;
: 它指定了要转发到的目标地址为http://frp.twoitmen.club:6003/
。proxy_set_header Host $host;
: 在转发请求时,设置了Host
请求头为原始请求的主机名。proxy_set_header X-Real-IP $remote_addr;
: 在转发请求时,设置了X-Real-IP
请求头为原始请求的客户端 IP 地址。
将frps命令写入system
输入命令
1 | vim /lib/systemd/system/frps.service |
写入配置
1 | [Unit] |