通过Azure应用网关访问WSO2 API Manager门户报资源未找到的配置咨询
WSO2 API Manager 4.0.0 搭配Azure应用网关访问异常的解决配置
当通过Azure应用网关访问WSO2 APIM出现“requested resource not found”时,核心原因是APIM未正确识别外部请求的域名和转发头,必须做以下特定配置:
1. 配置APIM的外部访问根URL
WSO2 APIM的管理门户(Publisher、Devportal等)依赖external_url生成内部链接和重定向地址,通过Helm部署时,要在部署配置里指定外部域名:
- 在
values.yaml中添加:
wso2apim: configs: deployment: externalUrl: "https://external.sp.com"
- 或者部署时用命令行参数:
helm upgrade --install apim wso2/wso2am --set wso2apim.configs.deployment.externalUrl=https://external.sp.com
这个配置会覆盖APIM内部的carbon.xml和门户配置,让应用网关转发的请求能匹配正确路由。
2. 调整Azure应用网关的路由规则
确保网关的路由配置没有截断请求路径:
- 路径匹配规则设为
/*(或单独配置/publisher/*、/devportal/*等),保证完整路径传递到后端Ingress。 - 后端池指向AKS的Ingress服务IP,健康检查路径用APIM的健康端点
/healthcheck,确保网关能正确识别后端状态。 - 若外部和内部路径有前缀差异,开启路径重写规则,保持请求路径一致。
3. 开启Ingress的转发头支持
Azure应用网关会传递X-Forwarded-Host、X-Forwarded-Proto等头,需要让Ingress控制器把这些头传给APIM,在Helm的values.yaml中配置Ingress注解:
ingress: enabled: true annotations: nginx.ingress.kubernetes.io/use-forwarded-headers: "true" nginx.ingress.kubernetes.io/x-forwarded-proto: "https"
这样APIM就能基于外部域名生成正确的响应,不会跳转到内部Ingress的地址。
4. 验证APIM内部配置
登录内部可正常访问的Publisher控制台,检查Settings > Configurations:
- 确认
Gateway Environments中的端点地址已指向外部域名https://external.sp.com。 - 检查
Portal Configurations里的回调URL是否正确,若未自动同步,手动更新为外部域名。
排查小技巧
- 查看应用网关的请求日志,确认请求是否完整转发到Ingress,路径是否未被修改。
- 用
curl测试外部URL,看响应头的Location是否指向外部域名:
curl -v https://external.sp.com/publisher
如果Location还是内部Ingress的地址,说明externalUrl配置未生效,需要重新部署APIM并确认配置已加载。
内容的提问来源于stack exchange,提问作者siva
相关产品推荐
相关产品推荐

