frp- 让你本机代码可以外网调试, 那么如何配置 frp 呢?

本贴最后更新于 1410 天前,其中的信息可能已经时异事殊

frp 是开发者人员必不可缺少的工具之一,比如你在开发需要外网请求方可调试的程序,例如微信公众号,又或者第三方支付(需要接收第三方服务器的通知回调),又或者基于本人开发的《可爱猫 |http-sdk》进行一些功能开发,frp 就相当方便实用啦!不多说,正文开始 ~

frp 下载

frp 配置详解说明

frps.ini 服务端配置

[common]                        # 通用配置段
bind_addr = 0.0.0.0             # 绑定的IP地址,支持IPv6,不指定默认0.0.0.0;
bind_port = 7000                # 服务端口;
bind_udp_port = 7001            # 是否使用udp端口,不使用删除或注释本行;
kcp_bind_port = 7000            # 是否使用kcp协议,不使用删除或注释本行;
# proxy_bind_addr = 127.0.0.1   # 代理监听地址,默认和bind_addr相同;
 
# 虚拟主机
vhost_http_port = 80            # 是否启用虚拟主机,端口可以和bind_port相同;
vhost_https_port = 443
vhost_http_timeout = 60         # 后端虚拟主机响应超时时间,默认为60s;
 
# 开启frps仪表盘可以检查frp的状态和代理的统计信息。
dashboard_addr = 0.0.0.0        # frps仪表盘绑定的地址;
dashboard_port = 7500           # frps仪表盘绑定的端口;
dashboard_user = admin          # 访问frps仪表盘的用户;   
dashboard_pwd = admin           # 密码;
assets_dir = ./static           # 仪表盘页面文件目录,只适用于调试;
 
# 日志配置文件
log_file = ./frps.log           # 日志文件,不指定日志信息默认输出到控制台;
log_level = info                # 日志等级,可用等级“trace, debug, info, warn, error”;
log_max_days = 3                # 日志保存最大保存时间;
 
token = 12345678                # 客户端与服务端通信的身份验证令牌
 
heartbeat_timeout = 90          # 心跳检测超时时间,不建议修改默认配置,默认值为90;?
 
# 指定允许客户端使用的端口范围,未指定则没有限制;
allow_ports = 2000-3000,3001,3003,4000-50000
 
max_pool_count = 5              # 每个客户端连接服务端的最大连接数;
max_ports_per_client = 0        # 每个客户端最大可以使用的端口,0表示无限制
 
authentication_timeout = 900    # 客户端连接超时时间(秒),默认为900s;
 
subdomain_host = frps.com       # 自定义子域名,需要在dns中将域名解析为泛域名;
 
tcp_mux = true                  # 是否使用tcp复用,默认为true;
                                # frp只对同意客户端的连接进行复用;

frpc.ini 客户端配置详解

[common]                        # 通用配置段
 
server_addr = 0.0.0.0           # server的IP地址;支持IPv6
server_port = 7000              # server的端口;
 
# 如果要通过http或socks5代理连接frps,可以在此处或在全局环境变量中设置代理,只支持tcp协议;
# http_proxy = http://user:passwd@192.168.1.128:8080
# http_proxy = socks5://user:passwd@192.168.1.128:1080
 
# 客户端日志
log_file = ./frpc.log       # 指定日志文件;
log_level = info            # 指定日志等级;
log_max_days = 3
 
 
token = 12345678            # 客户端与服务端通信的身份验证令牌
 
# 设置管理地址,用于通过http api控制frpc的动作,如重新加载;
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_passwd = admin
 
pool_count = 5              # 初始连接池的数量,默认为0;
 
tcp_mux = true              # 是否启用tcp复用,默认为true;
 
user = your_name            # frpc的用户名,用于区别不用frpc的代理;
 
login_fail_exit = true      # 首次登录失败时退出程序,否则连续重新登录到frps;
 
protocol = tcp              # 用于连接服务器的协议,支持tcp、kcp、websocket;
 
dns_server = 8.8.8.8        # 为frp 客户端指定一个单独的DNS服务器;
 
# start = ssh,dns           # 要启用的代理的名字,默认为空表示所有代理;
 
# 心跳检查
# heartbeat_interval = 30   # 失败重试次数
# heartbeat_timeout = 90    # 超时时间
 
# 配置示例
[ssh]                       # 代理配置段名称,如果配置user=your_name,则显示为your_name.ssh;
type = tcp                  # 协议默认tcp,可选tcp,udp,http,https,stcp,xtcp;
local_ip = 127.0.0.1        # 本地地址
local_port = 22             # 本地端口
use_encryption = false      # 是否加密服务端和客户端的通信信息,默认为不加密;
use_compression = false     # 是否开启压缩,默认不开启;
remote_port = 6001          # 在服务器端开启的远程端口;
# 负载均衡配置
group = test_group          # 负载均衡组名,会将同一组内的客户端进行负载;
group_key = 123456          # 负载均衡组密钥; 
# web示例
[web01]
type = http                 # 使用http
local_ip = 127.0.0.1    
local_port = 80
use_encryption = false
use_compression = true
http_user = admin           # 访问web01页面启用认证,用户名admin
http_pwd = admin            # 密码
subdomain = web01           # 子域名,需要服务端配置了subdomain_host参数;
custom_domains = web02.example.com # web01的域名,和subdomain二选一
locations = /,/pic          # 指定用于路由的URL前缀;
host_header_rewrite = example.com   # 配置http包头域名重写;
header_X-From-Where = frp           # 添加包头信息X-From-Where: frp;

frp 启动命令

Server

# 直接运行
./frps -c frps.ini
# 后台运行
nohup ./frps -c frps.ini >/dev/null 2>&1 &

Client

# 直接运行
./frpc -c frpc.ini
# 后台运行
nohup ./frpc -c frpc.ini >/dev/null 2>&1 &

说明

其中,> 为输出重定向符号,>/dev/null 2>&1。这条命令其实分为两命令,一个是 >/dev/null,另一个是 2>&1。

  • > /dev/null

这条命令的作用是将标准输出 1 重定向到/dev/null 中。/dev/null 代表 linux 的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了 >/dev/null 之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。

  • 2>&1

这条命令用到了重定向绑定,采用&可以将两个输出绑定在一起。这条命令的作用是错误输出将和标准输出同用一个文件描述符,说人话就是错误输出将会和标准输出输出到同一个地方。

linux 在执行 shell 命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以 >/dev/null 2>&1 的作用就是让标准输出重定向到/dev/null 中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null 中,错误输出同样也被丢弃了。执行了这条命令之后,该条 shell 命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中。

frp 免费服务器

感谢这位博友给大家提供的免费服务器!
https://www.ioiox.com/archives/notice-2020-12-23.html
本人也在实用中 ~

  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    20 引用 • 7 回帖
1 操作
ieras 在 2021-01-11 16:59:11 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • ieras 1 评论
    作者

    trollface

    🍀
    ieras