1.背景:由于使用了Windows Server 2008 的服务器,IIS 多个站点无法共用一个443端口, 所以使用Nginx 代理;

2.问题:其中一个网站是企业微信的应用,扫一扫等用到Js-SDK的地方就没有反应了,调试之后发现报Invalid Signature 签名无效;

3.分析:因为之前都是正常使用的,所以排除代码问题,怀疑是用nginx 代理之后出现的问题,然后就把nginx代理关掉,恢复用IIS绑定443 ,应用”扫一扫“功能恢复正常,然后再看ngix配置的文档,发现会替换当前访问的域名和端口,才恍然大悟,签名用的URL是后台获得的当前地址,经过代理后会替换成IIS上的http的地址,所以造成了无效签名

微信JS-SDK Nginx代理后 签名报错 Invalid signature

4.解决方案:

   a) 前台传入URL,

   b)后台替换为nginx配置的域名

相关文章: