frp简介
frp官方源文件
1、下载frp安装包
首先在上面官方链接中下载frp安装包,网络条件受限无法访问Github的同学可以在文末下载我通过百度网盘分享的官方源文件。
2、解压安装包
选择frp_0.58.0_linux_amd64.tar.gz版本的安装包部署,解压到服务器/home/frp目录下
frps服务端部署
1、编辑frps.toml文件
这个是frps服务端的配置文件,frp有很多配置项,但是大多数情况下使用系统默认配置即可,我的配置文件如下:
# 服务端监听端口,官方默认配置的端口是7000,个人建议不要使用默认端口 bindPort = 7000 # http代理监听端口,为了方便后续http转发方式不用指定端口,所以我这里使用了80默认端口,坏处是服务端服务器无法使用80端口部署网站服务,就只做frps vhostHTTPPort = 80 # https代理监听端口,同上述http服务一样 vhostHTTPSPort = 443 # 鉴权方式 auth.method = "token" # 客户端连接的token,相当于密码,为了安全,建议密码组合为英文大小写+特殊字符+阿拉伯数字,且长度不小于10位 auth.token = "your token" # 服务端控制台UI界面端口 webServer.port = 7001 webServer.addr = "0.0.0.0" # dashboard's username and password are both optional webServer.user = "username" webServer.password = "password" # 允许客户端设置的最大连接池大小,如果客户端配置的值大于此值,会被强制修改为最大值,默认为 5。 transport.maxPoolCount = 100 # 日志配置,注意在文件路径新建log文件夹 log.to = "/home/frp/log/frps.log" log.level = "info" log.maxDays = 10
2、启动frps服务
第一次部署服务建议使用控制台前台方式尝试启动服务,有助于直观看到异常信息
# 控制台前台方式启动,出现异常时及时发现错误信息,注意需要进入frps.toml文件所在路径再执行启动命令 ./frps -c ./frps.toml
3、使用 systemd 来管理 frps 服务
包括启动、停止、配置后台运行和设置开机自启动
操作指引:https://gofrp.org/zh-cn/docs/setup/systemd/
4、常用命令:
# 控制台前台方式启动,出现异常时及时发现错误信息 ./frps -c ./frps.toml # 启动frp sudo systemctl start frps # 停止frp sudo systemctl stop frps # 重启frp sudo systemctl restart frps # 查看frp状态 sudo systemctl status frps
5、服务端控制台UI界面
查看服务运行状态

frpc客户端部署
1、编辑frpc.toml文件
# frps服务连接配置 serverAddr = "可以是域名或者公网IP" serverPort = 27001 auth.token = "your token" # 日志配置 log.to = "/home/frp/log/frpc.log" log.level = "info" log.maxDays = 10 # HTTP服务 [[proxies]] name = "test-http" type = "http" localPort = 8001 customDomains = ["test1.域名.com"] # HTTPS服务 [[proxies]] name = "test-https" type = "https" localPort = 8002 customDomains = ["test2.域名.com"] # 通过 Proxy Protocol 协议来传递经过 frp 代理的请求的真实 IP transport.proxyProtocolVersion = "v2"
2、启动frpc服务
# 控制台前台方式启动,出现异常时及时发现错误信息 ./frpc -c ./frpc.toml # 启动frp sudo systemctl start frpc # 停止frp sudo systemctl stop frpc # 重启frp sudo systemctl restart frpc # 查看frp状态 sudo systemctl status frpc
3、内网穿透服务获取请求者真实IP
这里需要注意,frpc.toml文件配置了transport.proxyProtocolVersion = “v2″的时候,相应的内网服务的Nginx配置文件需要修改配置,我的配置如下:
#1 在listen末尾加上proxy_protocol
#2 在root 后面加上real_ip_header proxy_protocol; real_ip_recursive on; set_real_ip_from 127.0.0.1;
server {
listen 8001 ssl http2 proxy_protocol;#1 在listen末尾加上proxy_protocol
server_name www.minetime.top;
index index.php index.html index.htm default.php default.htm default.html;
root /www/www.minetime.top;
real_ip_header proxy_protocol;
real_ip_recursive on;
set_real_ip_from 127.0.0.1;
### 省略其他默认配置
}
4、注意事项
(1)客户端frpc.toml文件配置的时候,一定要注意,当部署多个http或者https本地服务的时候,理论上多个服务的localPort都可以复用80/443默认端口,但是笔者在部署过程中遇到窜站和Nginx404错误,在每个服务都单独使用不同端口后,这个问题得到解决!(也有可能是笔者不懂Nginx,配置异常导致的问题,如果有同学成功解决了此问题,欢迎留言告知!)
(2)启用https服务的时候,如果使用的是Let’s Encrypt免费证书,一定要每个子域名单独申请证书,使用泛域名证书会导致同一个浏览器打开两个子域名网页窜站的问题!
(3)使用Let’s Encrypt申请免费证书,配置阿里云DNS自动验证,最好新建一个子账号,仅授权AliyunDNSFullAccess管理云解析(DNS)的权限即可!
官方源文件百度网盘链接