网站首页 > 精选教程 正文
最近一直在做微信服务号的相关开发,其中一个特别麻烦的问题就是,如何在本地调试,将微信服务器的信息转发到自己的开发机上,下面为大家介绍几种我尝试过的方法
微信公众号(服务号)对服务器的要求
- 域名(线上环境必须备案)
- 支持http和https两种解析,对应的只支持80和443端口
微信沙盒环境
正常开发测试我们肯定不能使用线上的app_id,微信为我们提供了沙盒环境,如果多人同时使用,可以各自申请各自的测试账号,绑定到自己的域名上就可以了。
ngrok
刚开始开发的时候,第一个想到的就是到网上搜“微信内网穿透”,然后发现了ngrok,执行下面命令后,会返回一个随机的域名,然后这个域名的流量会转发到你当前机器上,因为开发环境需要通过Host头对应到不同的目录,所以使用-host-header直接重新Host头
./ngrok http -host-header=xxx.domain.com xxx.domain.com:80
然而,忽然有一天不知道为什么,怎么都连不上了。。。
这时,我发现ngrok竟然是个开源软件,到github下载下来后发现,官网提供的是2.0版本的服务,而开源的是1.X版本(没有重新Host功能),所以放弃了。
ssh
因为我有一台外网的阿里云服务器,想着看看有没有什么办法能利用起来,无意在网上发现了一条神奇的命令
ssh root@domain.com -R 10000:xxx.domain.com:80
对应的nginx配置
server {
listen 80;
server_name xxx.domain.com;
location / {
proxy_pass http://127.0.0.1:10000;
}
}
执行后,会登陆远程的服务器,然后通过ssh服务将流量转发到本地的xxx.domain.com的80端口,太神奇了,之后也一直使用这条命令。
frp
最近开发人员变多了,不是所有人都有外网服务器,然后当有两个人同时需要开发测试的时候就有点尴尬了,本着找不到解决方法不睡觉的精神,我发现了一款国人写的类似ngrok的软件:frp
配置稍微麻烦了一点点,但是,这下可以同时支持多个人开发啦。
实现步骤如下:
配置域名泛解析
将外网域名配置泛解析,*.domain.com都指到阿里云服务器的IP
配置nginx(注意反向代理的端口我使用了30000)
server {
listen 80;
server_name *.domain.com;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:30000;
}
}
外网服务器frps配置
#frps.ini
[common]
#服务端口
bind_port = 7000
#虚拟端口
vhost_http_port = 30000
#dashboard端口和账号密码,可以直接加端口号方法,有一些统计数据
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
#为了防止别人卵用,我们加上token
privilege_token = Fiwlasdj&^$fadf
#心跳超时
heartbeat_timeout = 90
#最大连接池
max_pool_count = 5
#认证超时
authentication_timeout = 900
#子域名,配置后,客户端可以随便指定二级域名使用(方便多人)
subdomain_host = domain.com
#TCP 多路复用,不用可以删掉
tcp_mux = true
启用命令:./frps -c ./frps.ini
客户端frpc配置
#frpc.ini
[common]
#外网服务器IP
server_addr = x.x.x.x
#外网服务端口号
server_port = 7000
#客户端启用连接池,指定预创建连接的数量
pool_count = 1
#和服务器的token保持一致
privilege_token = Fiwlasdj&^$fadf
[web]
#协议类型
type = http
#转发到本地的端口号
local_port = 80
#子域名,可以通过wx.domain.com访问到本地
subdomain = wx
#重新host header(按主要就要这个功能)
host_header_rewrite = host.domain.com
#本地Ip OR domain(这个官网并没有说明,下面我会讲为什么这样设置)
local_ip = xxx.localhost.com
#TCP 多路复用,不用可以删掉
tcp_mux = true
第一次使用没有配置local_ip,然后本地会报错[E] [proxy.go:299] [web] connect to local service [127.0.0.1:80] error: dial tcp 127.0.0.1:80: getsockopt: connection refused。
因为我的环境跑在vagrant里面,正常情况我都是通过绑定host到虚拟机的ip使用的,但是frp默认会访问127.0.0.1,然后看了一下源码对应的位置,如下:
localConn, err := frpNet.ConnectServer("tcp", fmt.Sprintf("%s:%d", localInfo.LocalIp, localInfo.LocalPort))
if err != nil {
workConn.Error("connect to local service [%s:%d] error: %v", localInfo.LocalIp, localInfo.LocalPort, err)
return
}
继续往上追踪
if cfg.LocalIp = section["local_ip"]; cfg.LocalIp == "" {
cfg.LocalIp = "127.0.0.1"
}
原来可以指定local_ip参数来实现,不过之后的版本是否兼容,我就不清楚了,仰天一笑,哈哈哈哈。
启动命令:./frpc -c ./frpc.ini
猜你喜欢
- 2024-10-18 红队攻防实践:不出网主机搭建内网隧道新思路
- 2024-10-18 如何在路由器上搭建自己的个人网站(架构篇)
- 2024-10-18 服务器常用端口都有哪些? 服务器的常用端口号有哪些
- 2024-10-18 通过一次安全处理暴露的问题 通过一次安全处理暴露的问题的英文
- 2024-10-18 实用工具--一行命令搞定内网映射到外网
- 2024-10-18 给Frp穿透的内网Web上https frp内网穿透教程
- 2024-10-18 微内网穿透代理工具tiny-ws-tunnel的使用
- 2024-10-18 SSH隧道详解与使用AutoSSH实现稳定的内网穿透
- 2024-10-18 Docker镜像最稳定解法?基于VPS服务器自建加速
- 2024-10-18 「Docker应用」搭建个人博客-Halo
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)