今天为大家介绍一款内网穿透功能软件
frp
,该款软件可以实现本地运行环境接口可在公网进行访问,讲大白话就是本地的localhost
网页可以在全世界各地让别人打开。
目录
一、什么时候使用FRP
frp使用场景比较典型的有以下几种情况
- 你本地搭建的网页,希望可以让的地方的人打开浏览(演示本地测试环境版本等)
- 本地API接口希望远程协同团队可以调用打断点查看问题
- 本地测试微信支付/支付宝支付等回调问题
- 测试任何第三方异步回调逻辑
- http,tcp,upd 协议服务代理
二、如何使用FRP
在使用frp前您还需要有一台公网可访问的服务器
下文将为大家讲解开发中常用的两种情况,转发http和tcp
frp在githut上有开源源码,需要的可以直接在上面下载编译好的安装包。 frp官方文档
1. 通过自定义域名访问内网的Web服务(HTTP)
(1)下载文件后把文件传至服务器,并修改服务器端frps.ini
配置文件
[common]
# 软件运行监听端口
bind_port = 7000
#HTTP 请求端口为 8080
vhost_http_port = 8080
启动frp服务
nohup ./frps -c ./frps.ini > nohup.out 2>&1 &
(2)修改 本地 frpc.ini
文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,local_port 为本地机器上 Web 服务监听的端口, 绑定自定义域名为 custom_domains。
[common]
server_addr = x.x.x.x
server_port = 7000
[web]
type = http
local_port = 80
custom_domains = www.a1.com
[web2]
type = http
local_port = 8080
custom_domains = www.a2.com
将 www.a1.com 和 www.a2.com 的域名 A 记录解析到 IP x.x.x.x,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。或者可以通过修改 HTTP 请求的 Host 字段来实现同样的效果。
通过浏览器访问 www.a1.com:8080 即可访问到处于内网机器上 80 端口的服务
访问 www.a2.com:8080 则访问到内网机器上 8080 端口的服务。
2. 转发 TCP
示例通过配置 Unix域套接字客户端插件来通过 TCP 端口访问内网的 Unix域套接字服务,此应用比较常见的是大家在测试物联网设备时候经常会使用,多数硬件物联网设备都是走tcp服务,并且需要访问公网ip建立链接,给开发调试增加很大的难度,frp就很好解决了这个问题。
在frp.ini中配置
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
通过 type 指定代理类型。
frp 会为本地服务的 22 端口,在 frps 所在的服务端监听 6000 端口,将 6000 端口接收到的连接和本地服务的 22 端口关联,透传流量,从而实现让用户在外部访问到内部服务。
即访问公网IP x.x.x.x:6000的数据将有本地127.0.0.1:22建立链接
三、其他说明
可访问githut查看具体使用说明:https://github.com/fatedier/frp
官网文档地址:frp官方文档
使用技巧
如果需要nginx反向代理使用80端口的nginx需要进行代理配置,具体配置如下
server{
listen 80;
server_name frp.a.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header X-Powered-By;
}
}
原需要www.a.com:8080 访问现只需要frp.a.com访问即可
评论 (0)