请选择 进入手机版 | 继续访问电脑版
用户
请注意:社区账号与官网账号不互通,如需登录社区,请在此注册社区账号!
 找回密码
 注册社区账号

QQ登录

只需一步,快速开始

搜索

Nginx反代负载均衡后,登录报域名与微信授权的域名不一致

使用交流 2018-01-29 14:41 [复制链接] 查看: 155|回复: 0
redirect_uri域名与后台配置不一致,错误码:10003,如图所示:
wxerr.png

前端访问域名为:uc.test.com
后端2台服务器,域名均为:uc2.test.com

反代请求浏览大致如下:
浏览器 -> 前端服务器(https://uc.test.com/) -> 反代 -> 后端服务器(https://uc2.test.com/)

如果不做反代负载均衡的话,就不会报这个错误,这是为什么呢?

原因分析

首先得看看微信的登录验证时序图:
wxauth.png
上图来自:网站应用微信登录开发指南

但是这个问题其实和这个时序图没什么关系,因为使用 Fiddler 抓包发现:
访问:http://uc.test.com/ 时,会 302 跳转到:
http://uc.test.com/logins/wxlogin?state=http://uc.test.com/index/index/Wxloginback?c=&ser=&p=&vc=
再次 302 跳转到:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=http%3A%2F%2Fuc2.test.com%2Flogins%2Fwxlogin&response_type=code&...
报错的正是此处的 redirect_uri=http%3A%2F%2Fuc2.test.com%2Flogins%2Fwxlogin,URLDecode后为:http://uc2.test.com/logins/wxlogin
而以上2次跳转,均是由后端服务器控制的,因此问题还是在后端服务器上部署的程序上。

当不使用负载均衡时,不会报这个错误,这是因为后端服务器输出的就是 redirect_uri=http://uc.test.com/logins/wxlogin
但是当使用负载均衡后,为什么后端服务器会输出  redirect_uri=http://uc2.test.com/logins/wxlogin
很明显,这是 PHP 程序控制的。

解决方法

一、改程序代码

目前碰到的这个客户,后端是PHP写的程序,全局搜索后发现以下代码:
  1.             if(!isset($_GET['code'])){
  2.                 //以下信息可安放在用户登录界面上:
  3.                 $posturl= 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='.$appid.'&redirect_uri='.$hostUrl.'&response_type=code&scope=snsapi_base&state='.$state.'#wechat_redirect';
  4.                 header('Location:'.$posturl);//跳转到第三方登录入口
  5.                 exit;
  6.             }
复制代码

很明显,redirect_uri 值中的 $hostUrl 是返回了后端服务器自己的域名,即 uc2.test.com。
由于这款 PHP 程序是使用 ThinkPHP 开发的,我们很容易就找到了它的配置文件:
userCenter/application/config.php (具体路径,根据你使用的程序会有所不同)
打开配置文件,将域名根 url_domain_root 设置为前端访问的域名,如下:
  1.     // 域名根,如thinkphp.cn
  2.     'url_domain_root'        => 'uc.test.com',
复制代码


二、调整nginx配置
将所有后端服务器上的网站域名都设置为 uc.test.com。
这是比较科学的解决方法,但是由于客户的前端做 Nginx 反代的机器上也充当了后端服务器的角色,uc.test.com 已经分配给前端反代网站使用,后端网站不能再使用 uc2.test.com。因此只能使用方法一来解决。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册社区账号

本版积分规则

温馨提示
为了能您的问题能够尽快得到解决,复杂问题建议您直接提交工单处理。
QQ群:744188

Archiver|手机版|AppNode 用户社区

GMT+8, 2018-2-25 05:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回列表