WSO2 API Manager 3.2.0注册的回调与代理后面的customUrl不匹配

WSO2 API Manager 3.2.0注册的回调与代理后面的customUrl不匹配,wso2,wso2-am,Wso2,Wso2 Am,我面临的问题是,在更改主机名并按照所述和配置反向代理之后,以及按照故障排除指南解决“注册的回调不匹配”问题之后,我无法获得进一步的信息 我已经学习了许多其他示例,介绍了如何配置nginx,以及如何将reverseProxy属性添加到settings.js configs中,但运气不好 正如您在下面看到的,如果我转到,我将继续收到错误“注册的回调不匹配” 以下是我将回调正则表达式设置为: regexp=() 如果我检查authorize request查询,我可以看到redirect_url被设

我面临的问题是,在更改主机名并按照所述和配置反向代理之后,以及按照故障排除指南解决“注册的回调不匹配”问题之后,我无法获得进一步的信息

我已经学习了许多其他示例,介绍了如何配置nginx,以及如何将reverseProxy属性添加到settings.js configs中,但运气不好

正如您在下面看到的,如果我转到,我将继续收到错误“注册的回调不匹配”

以下是我将回调正则表达式设置为: regexp=()

如果我检查authorize request查询,我可以看到redirect_url被设置为127.0.0.1,我怀疑这就是问题所在,因为当我将该url添加到服务提供程序regex回调时,它可以工作,但这不适用于非本地环境

下面是请求查询(我怀疑主要问题在于-注意重定向uri):

以下是my deployment.toml的配置方式(我已将实际域替换为example.com):

注意,我必须删除端口才能在代理后面工作

这是我的settings.js: 我在github中添加了reverseProxy属性

这是我的nginx配置:


这是一个已知的限制。请查找解决问题的步骤-

这是一个已知的限制。请找到解决此问题的步骤-

此错误的原因归结为缺少X-Forwarded-for标头,我最终将settings.js中的forwardedHeader更改为Host,因为它是从我的代理服务器传递的


此错误的原因归结为缺少X-Forwarded-for标头,我最终将settings.js中的forwardedHeader更改为Host,因为它是从我的代理服务器传递的


感谢您提出的详细问题“user3745065”。 我遇到了和你在这篇文章中描述的完全相同的问题,我想我已经解决了这个问题

正如您提到的,问题在于forwardedHeader,在您的情况下,您切换到了主机

但在查看产品文档时,他们提供的示例如下:

customUrl: { // Dynamically set the redirect origin according to the forwardedHeader host|proxyPort combination
enabled: true,
forwardedHeader: 'X-Forwarded-Host',
},
我花了一段时间才注意到forwardedHeader应该是“X-Forwarded-Host”而不是“X-Forwarded-For”,因为它是默认值

我还需要做一些在更改主机名()的文档中不清楚的事情,我必须从devportal中删除端口变量${mgt.transport.https.port}。 安装步骤5中也概述了这一点。但值得一提的是:

from:
[apim.devportal]
url = "https://{Your Domain}:${mgt.transport.https.port}/devportal"
to
url = "https://{Your Domain}/devportal"
否则,当它尝试重定向到门户(例如,从发布服务器)时,它将使用端口号构造url,并且默认端口9443将无法在您的代理(使用文档中提供的设置在nginx上进行测试)上工作,该代理正在侦听并期待对端口443的调用

我注意到您配置了一些东西,但可能没有必要:

  • 设置apim.idp设置
  • 设置reverseProxy设置
  • 设置apim.gateway.environment设置(与回调url问题无关,这是为了让您配置运行时网关url)
最后但并非最不重要的一点是,在“”之后,您需要再次从url中删除端口号,否则您的代理上会出现上述相同的问题


就我的2美分!;)

感谢您提出的详细问题“user3745065”。 我遇到了和你在这篇文章中描述的完全相同的问题,我想我已经解决了这个问题

正如您提到的,问题在于forwardedHeader,在您的情况下,您切换到了主机

但在查看产品文档时,他们提供的示例如下:

customUrl: { // Dynamically set the redirect origin according to the forwardedHeader host|proxyPort combination
enabled: true,
forwardedHeader: 'X-Forwarded-Host',
},
我花了一段时间才注意到forwardedHeader应该是“X-Forwarded-Host”而不是“X-Forwarded-For”,因为它是默认值

我还需要做一些在更改主机名()的文档中不清楚的事情,我必须从devportal中删除端口变量${mgt.transport.https.port}。 安装步骤5中也概述了这一点。但值得一提的是:

from:
[apim.devportal]
url = "https://{Your Domain}:${mgt.transport.https.port}/devportal"
to
url = "https://{Your Domain}/devportal"
否则,当它尝试重定向到门户(例如,从发布服务器)时,它将使用端口号构造url,并且默认端口9443将无法在您的代理(使用文档中提供的设置在nginx上进行测试)上工作,该代理正在侦听并期待对端口443的调用

我注意到您配置了一些东西,但可能没有必要:

  • 设置apim.idp设置
  • 设置reverseProxy设置
  • 设置apim.gateway.environment设置(与回调url问题无关,这是为了让您配置运行时网关url)
最后但并非最不重要的一点是,在“”之后,您需要再次从url中删除端口号,否则您的代理上会出现上述相同的问题


就我的2美分!;)

感谢您的回复,最终导致X-Forwarded-for标头丢失,无论出于何种原因,我的nginx反向代理没有添加标头,但我将app.customUrl.forwardedHeader更改为Host,因为它是由我的代理服务器发送的感谢您的回复,最终导致X-Forwarded-For标头丢失,无论出于何种原因,我的nginx反向代理没有添加标头,但我将app.customUrl.forwardedHeader更改为Host,因为它是由我的代理服务器发送的