如何在本地开发环境测试微信/支付宝支付回调功能 frp使用介绍

哈根达斯
2021-07-02 / 0 评论 / 819 阅读 / 正在检测是否收录...

今天为大家介绍一款内网穿透功能软件frp,该款软件可以实现本地运行环境接口可在公网进行访问,讲大白话就是本地的localhost网页可以在全世界各地让别人打开。

目录

一、什么时候使用FRP

frp使用场景比较典型的有以下几种情况

  1. 你本地搭建的网页,希望可以让的地方的人打开浏览(演示本地测试环境版本等)
  2. 本地API接口希望远程协同团队可以调用打断点查看问题
  3. 本地测试微信支付/支付宝支付等回调问题
  4. 测试任何第三方异步回调逻辑
  5. http,tcp,upd 协议服务代理

kqmd0gfj.png

二、如何使用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

评论 (0)

取消