写在前面
众所周知,我们微信开发过程会遇到以下两个场景:
- 用户扫码、点击菜单、发送消息 等,【微信】会转发到【我们在微信后台配置的域名】,实现逻辑处理,推送消息给用户 或者 做相应的逻辑处理
- 公众号页面,需要登录获取openid,跳转的域名需要白名单。不利于本地调试
内网映射
我们可以使用一系列内网穿透映射的工具,可以在公网访问本地开放的程序,(无论是自己搭建还是使用其他产品 都适用) 如果是自己搭建或者使用付费的内网穿透工具,那么隧道域名将可以固定,我们在以下两个地方配置为获取到的内网域名,微信将会把所有请求 转发到 我们本地的这个穿透域名上,就可以实时调试了
- 获取openid的授权域名
- 微信公众号接管服务器域名
免费内网穿透的问题
这里在使用一些免费内网穿透产品遇到的问题,并不是所有免费内网穿透都有此问题,记录此篇文章是增加一种程序思维。解决问题的思路。 我使用的工具,分配的免费域名,会不定期变动,如第一次分配为siamA.xxxx.com
可能一个小时后会变成siamB.xxxx.com
这个时候就不适用我们上面说的这种,直接配置穿透域名在微信后台 因为需要反复修改,比较麻烦
nginx 线上域名
我这里的做法是:提前把业务以后上线的域名准备好,部署在服务器,通过转发
再转发到穿透域名。 如果内网穿透域名变化,只需要在服务器修改一次内网域名(此步骤可以通过脚本,实现自动切换 非本篇文章思路重点内容) 不需要反复去登录微信后台修改授权域名。(特别是登录微信公众号需要公司领导扫码的情况) 以下为nginx转发配置文件
location ^~ /
{
expires 12h;
if ($request_uri ~* "(phpjspcgiaspaspx)")
{
expires 0;
}
proxy_pass http://siamC.xxxx.com;
proxy_set_header Host siamC.xxxx.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
#持久化连接相关配置
#proxy_connect_timeout 30s;
#proxy_read_timeout 86400s;
#proxy_send_timeout 30s;
#proxy_http_version 1.1;
#proxy_set_header Upgrade $http_upgrade;
#proxy_set_header Connection "upgrade";
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
add_header Cache-Control no-cache;
}
扫描二维码,分享此文章