我已将一个网站迁移到 Amazon ec2,该网站连接到我们正在使用的服务,该服务安装在另一台服务器(而不是 Amazon)上。对该服务的 API 的访问受 IP 限制,并通过使用 PHP 中的 *http_build_query* 和 *stream_context_create* 发送 XML 数据来完成。
如果我想从新服务器连接到服务,我需要先让供应商添加新 IP。我通过向他们发送弹性 IP 来做到这一点,但它不起作用。在尝试调试时,我注意到 $_SERVER['SERVER_ADDR'] 的输出是 ec2 实例的私有 IP。我假设另一端的服务器正在接收相同的数据,因此它会尝试对私有 IP 进行身份验证。我已经要求供应商也允许从私有 IP 进行访问——它还没有实现,所以我不确定这是否能解决问题,但据我了解他们的 API 的工作方式,它会尝试将数据解析回与之联系的 IP,这应该是不可能的,因为服务器位于亚马逊云之外。
我可能会在这里错过一些非常明显的东西。我向rc.local (在我的 ec2 实例上运行 CENT 操作系统)添加了一个命令,该命令在启动时使用ec2-associate-address将弹性 IP 与服务器相关联,这似乎有助于使 MySQL 连接到另一个外部服务器工作,但是上面提到的API没有运气。
排除一件事 - API 是通过 HTTPS 访问的,在安全组中启用了端口 80 和 443(以及一个 mysql 端口)并进行了测试。域和 SSL 运行良好。
任何提示都非常感谢 - 我已经搜索了很多,但到目前为止找不到任何有用的东西。