利用nginx转发实现本地调试微信公众号后台

一直想注册一个服务号未遂,于是只能注册为坑爹的个人账号,才发现各种限制,既不能认证(高级接口需要认证后才能用),开发者认证还得交钱,哎,说好的再小的个体也有自己的品牌呢???
最近遇到最大的问题就是没法本地调试,你得看着接口文档把代码写好,部署到后台去,才能进行测试。
其实我机是可以通过外网访问的。

怎么实现通过外网访问我的电脑的呢?

每一个能够上网的网络环境都有一个对应外网的IP地址的,这个可以在路由器中查找到。一般就是路由器
WAN口 IP:183.19.56.188 (不要试图打开,我只是举个例子,类似于这种,而不是 192.168.xxx 等格式开头的),也可以在baidu中搜索IP两个字看到自己电脑的外网IP。
有了这个地址,在浏览器中输入 http://183.19.56.188 一般情况下是访问不到的,这个默认只是路由器的IP地址,而且路由器不会对外网开放80端口,如果想要访问自己的电脑,得做一个映射,一般在路由器设置中可以做映射,最简单的就是设置自己的电脑为DMZ主机,找到设置的地方,把自己电脑的内网ip输入进去(MAC命令:ifconfig,Window命令:ipconfig),这样访问183.19.56.188 就相当于访问自己电脑了。
如果不想把自己电脑完全裸露到外网,可以用路由器的端口转发功能,我的极路由有这个插件,可以指定外网访问的端口映射到内网指定主机的指定端口,我把外网的8001端口指定到我电脑的8080 端口 这样访问 http://183.19.56.188:8001 就能直接访问到我电脑的服务啦,把这个连接可以发给朋友去访问。

为什么我还是通过外网无法访问?

有几种可能,映射没有配置好,外网IP变化了(外网IP是经常变化的,因为你不是专线),你外网设置的是80 端口(这种情况下,一般是电信公司封掉80了,不建议用80端口

微信公众号调试工具调试事件

一开始我是这么配置的。可是怎么样也无法访问到我的机器,可是我用浏览器或者postman都是可以访问到的,百思不得其解,后来发现在配置正式url的时候发现提示不能配非80端口的url


于是我把8002 改成80端口,同时用nginx作为反向代理服务器,这样就能够访问到数据了,(刚说了不能直接通过80端口访问到我的电脑,所以另辟蹊径)看来这个坑不小啊

如何在正式环境和url和调试用的url都使用80端口呢?

因为正式环境也要用这个80端口,咋整?这里用到了nginx的反向代理,通过路径匹配

     location ^~ /wechat {
         proxy_pass http://localhost:8001;
     }
    location ^~ /wtest {
      proxy_pass http://***.**.org:8002;
    }

nginx作为所有服务的入口,通过路径不同转发到不同的服务上去,wtest 反向代理到我的电脑。我用一个二级域名代替外网IP,这样就能避免IP经常变化的问题。

最后奉上我的公众号

Leave a Reply

Your email address will not be published. Required fields are marked *