frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, udp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。简单来说frp就是用来转发的,它可以将对某个公网上的访问转发到对内网(局域网)内某台正在运行的服务上的访问。
二、为什么使用frp1.1 简介中简单介绍了一下frp是什么,以及作用。那我们为什么要使用frp呢?作为开发或者运维人员,当我们需要在外网也能访问项目时,一般会有如下两种方式:
(1) 在云服务器提供商处购买服务器,搭建项目运行环境;
(2) 使用一些公司提供的内网穿透服务,比如:花生壳、nat123、ngrok等,映射到自己电脑上的对应对口上。
1.2 上述两种方式的缺点:
(1)购买服务器,那我们需要购买什么配置的呢?配置低了项目运行缓慢卡顿,配置高了费钱。有时候只是一两个小的项目,对性能并没有很高的要求,但是在价钱上要想两全,很难。
(2)我只使用过花生壳的内网穿透功能,这里暂时以花生壳为例,虽然项目在本机运行,性能肯定可以保证,但它是有流量限制的,而且只能使用指定的访问地址,除非加钱,哈哈哈。
1.3 Frp:
对于Frp,我也是最近才听朋友第一次提起,不知道这个之前,一直很烦恼上面提到的问题。后来了解并使用了frp后,真香,谁用谁知道。使用Frp的前提条件:
(1) 、一台具有公网IP的服务器,可以购买一台云服务器【服务器的配置不用很高,我使用的是1核CPU、1G内存、1MB带宽(按流量计算费用)的配置,完全没有问题】
(2)、内网服务器若干,本次以一台为例
(3)、frp软件,server端和client端
frp也是托管在Github上的开源项目,直接到Release页面下载即可,链接如下:https://github.com/fatedier/frp/releases
在写本文时,frp的版本是 v0.35.1,末尾附有这两个版本的安装包,可正常使用。
以frp_0.35.1_windows_amd64.zip解压后为例(Windows版本):
3.2.1服务端相关文件(1):frps.exe、frps.ini、frps_full.ini
(2):frps.exe服务端运行程序;frps.ini:服务端配置文件(简化版);frps_full.ini:服务端配置文件(完整版)
(1):frpc.exe、frpc.ini、frpc_full.ini
(2):frpc.exe客户端运行程序;frpc.ini:客户端配置文件(简化版);frpc_full.ini:客户端配置文件(完整版)
frp的服务端配置比较简单
[common] #bind_port是服务端与客户端之间通信使用的端口号 bind_port = 7000 #与客户端的token必须设置成一致,token用于验证连接,只有服务端和客户端token相同的时候才能正常访问。如果不使用token,那么所有人都可以直接连接上 token = 123456 #转发web服务 vhost_http_port = 6555 #开启仪表板 dashboard_port = 6556 dashboard_user = admin dashboard_pwd = admin tcp_mux = true max_pool_count = 103.3.2:frp客户端配置
[common] #服务器ip server_addr = 121.89.160.28 #服务端与客户端之间通信使用的端口号 server_port = 7000 #与服务端的token必须设置成一致 token = 123456 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 #MySQL数据库 [mysql] type = tcp local_ip = 192.168.1.1 local_port = 3306 remote_port = 3306 custom_domains = 121.89.160.28 #你的frp的server的ip #Redis数据库 [redis] type = tcp local_ip = 192.168.1.1 local_port = 6379 remote_port = 6379 custom_domains = 121.89.160.28 #你的frp的server的ip或域名 #本地服务1 [web1] type = http #本地端口 1 local_port = 9090 custom_domains = aa.bb.cn #本地服务2 [web2] type = http #本地端口 1 local_port = 9090 custom_domains = web2.xx.xx #本地服务3 [web3] type = http #本地端口 1 local_port = 9000 custom_domains = web3.xx.xx
这里特别说明下frp下web服务的配置,以web1为例:假设frp服务器所在的ip为121.89.160.28,绑定的域名为 aa.bb.cn,使用Nginx代理转发到121.89.160.28:6555上,则frpc在配置web1时custom_domains必须设置成 aa.bb.cn【要和访问的域名完全一致,不含端口】,否则在输入aa.bb.cn访问时,会报frp给出的404错误。
3.4 启动运行Linux下启动frps服务端,在frp目录下执行:
nohup ./frps -c ./frps.ini > file.log 2>&1 &
启动后会将日志记录到file.log文件中
windows下启动frpc客户端:
start /b frpc.exe -c D:LocalServerfrpfrpc.ini
服务端和客户端都启动成功后即可正常使用frp服务了。
附:
Linux下查看正在使用的端口情况:
netstat -tunlp四、参考文章: 4.1 frp使用不同子域名映射本地的多个服务 4.2 使用FRP作为内网穿透服务 五、本文对应的FRP安装包
请到我的个人博客网站下载 :Frp的简单使用总结



