我正在使用 IBM APIC 5.0
我已经设置了以下内容。1. IBM HTTP Server,WAS Plugin 路由到 MicroGateway 2. MicroGateway,在 Collectives 上运行 3. IBM HTTP Server,WAS Plugin 路由到 Provider Application 4. Provider Application,在 Collectives 上运行
场景 1 - 直接调用 Provider App URL
- 对 IHS1/插件的 HTTPS 请求
- 配置 API 以直接调用 URL(例如 http://:9081),无需 SSL
- IHS1/插件 (svr1:443) > MicroGateway (svr1:9081) > 环回应用程序 (svr2:9081)
- 这行得通。
场景 2 - 通过 HTTP 服务器间接调用 Provider App
- 对 IHS1/插件的 HTTPS 请求
- 相应地设置主机标头(如知识中心中所述)
- 使用 SSL配置 API 以调用 IHS URL(例如https://svr1:443)
- IHS1/插件 (svr1:443) > MicroGateway (svr1:9081) > IHS2/插件 (svr2:443) > 环回应用程序 (svr2:9081)。
- 遇到 503 错误。
ihs2/plugin 跟踪显示以下内容:
[29/Sep/2016:12:55:59.40468] 00007ea3 fdd0b700 - ODR:DEBUG: matchVHost: 输入 - host=apidemo-57d22263e4b0171525a5042d-1474392568657.xxx,端口=443 [29/Sep/2016:12:5547]: 00007ea3 fdd0b700 - ODR:DEBUG: matchLongestURI: 虚拟主机 /cell/defaultCollective/vHostGroup/-vHost-apidemo-57d22263e4b0171525a5042d-1474392568657.xxx:-1 匹配的主机 apidemo-57d22263e4b0171525a50486d-41.
这表明配置的主机头匹配,并且能够找到提供者应用服务器。意味着动态路由在一定程度上起作用。
[29/Sep/2016:12:55:59.40565] 00007ea3 fdd0b700 - ODR:DEBUG: checkIfTransportIsValid: 端点名称='/cell/defaultCollective/node/,%2Fhome%2Fusers%2Fadmin%2Fwlpn/server/apidemo-57d22263e4b0171535a5042d54476 -1/transport/Https',port=9081 有效
这表明 9081 是有效部分,并且选择了 Https。
[29/Sep/2016:12:55:59.40971] 00007ea3 fdd0b700 - 错误:lib_stream:openStream:r_gsk_secure_soc_init 失败:GSK_ERROR_SOCKET_CLOSED(gsk rc = 420)合作伙伴证书 DN = 无可用信息,序列 = 无可用信息 [9 月 29 日/2016:12:55:59.40982] 00007ea3 fdd0b700 - 错误:GSK_INVALID_HANDLE [29/Sep/2016:12:55:59.40998] 00007ea3 fdd0b700 - 错误:ws_common:websphereGetStream:无法打开流
然后出现错误。它可能是 SSL 错误。我怀疑目前 Provider 应用程序没有启用 SSL。
关于如何解决此问题的问题
1) 如何使用 SSL 启用环回应用程序。我按照此说明进行操作,但它对我不起作用,因为我的环回应用程序部署在 Collectives 上。 https://github.com/strongloop/loopback-example-ssl
2) 如何配置动态路由以使用非 SSL http 流量?