Api 如何在AmazonEC2Linux机器上使用弹性IP而不是私有IP来创建Apache?

Api 如何在AmazonEC2Linux机器上使用弹性IP而不是私有IP来创建Apache?,api,amazon-ec2,centos,Api,Amazon Ec2,Centos,我已经将一个网站迁移到AmazonEC2,该网站与我们正在使用的服务挂钩,该服务安装在另一台服务器上,而不是安装在Amazon上。对该服务的API的访问受到IP限制,并通过在PHP中使用*http_build_query*&*stream_context_create*发送XML数据来完成 如果我想从新服务器连接到服务,我需要要求供应商首先添加新的IP。我通过向他们发送弹性IP实现了这一点,但它不起作用。 在尝试调试时,我注意到$\u SERVER['SERVER\u ADDR']的输出是ec2

我已经将一个网站迁移到AmazonEC2,该网站与我们正在使用的服务挂钩,该服务安装在另一台服务器上,而不是安装在Amazon上。对该服务的API的访问受到IP限制,并通过在PHP中使用*http_build_query*&*stream_context_create*发送XML数据来完成

如果我想从新服务器连接到服务,我需要要求供应商首先添加新的IP。我通过向他们发送弹性IP实现了这一点,但它不起作用。 在尝试调试时,我注意到$\u SERVER['SERVER\u ADDR']的输出是ec2实例的私有IP。 我假设另一端的服务器正在接收相同的数据,因此它尝试对私有IP进行身份验证。 我已经要求供应商也允许从私有IP进行访问——它还没有实现,所以我不确定这是否解决了问题,但就我了解他们的API的工作方式而言,它会尝试将数据解析回它联系的IP,这应该是不可能的,因为服务器在Amazon云之外

我可能会错过一些非常明显的东西。我在我的ec2实例上运行CENT OS的rc.local中添加了一个命令,该命令在启动时通过使用ec2 associate address将弹性IP与服务器关联,这似乎有助于使MySQL与另一个外部服务器的连接正常工作,但上面提到的API没有成功

排除一件事——API是通过HTTPS访问的,端口80和443以及一个mysql端口在安全组中启用并经过测试。域和SSL运行正常


非常感谢任何提示-我已经搜索了很多,但到目前为止没有找到任何有用的信息。

听起来IPs private和elastic在您的虚拟机中都很活跃。通过运行ifconfig-a进行检查。如果是这样,那么用于外部通信的IP将取决于远程地址和VM的路由表。它甚至可能因连接的不同而有所不同


如果是这样的话,那么最快的修复方法就是关闭具有私有地址的接口。这应该只为所有外部连接保留弹性地址。如果这解决了问题,那么您可以编写脚本,在弹性IP激活后自动关闭私有IP,或者如果弹性IP将永久分配给此VM,并且您确实不需要私有IP,那么您可以永久解除私有IP与此VM的关联。

谢谢。弹性IP根本没有出现在ipconfig中-eth0使用的是私有IP,而127.0.0.1上只有lo-就是这样。您确定MySQL连接使用了弹性IP吗?当我为我的虚拟机切换到弹性IP时,我是通过AWS web GUI完成的,因此我不知道在虚拟机中使用CLI进行操作时是否需要其他步骤。web GUI是否适合您的虚拟机?看起来正确,而且我确信MySQL使用了弹性IP,因为我只授权从弹性IP访问db。然而,我可能在这里犯了一个简单的错误:我只检查了托管在ec2服务器上的域中的apache变量/php全局变量。但当我访问亚马逊云以外的站点时,弹性IP会正常出现。这意味着我的API连接不能正常工作的原因很可能是不同的。问题解决了-尽管供应商声称我的弹性IP被授予了访问权限,但仍然被拒绝,最终使用Lynx证明了这一点。这解决了一切。如果其他人想知道,亚马逊ec2服务器在亚马逊云中以PHP全局显示内部IP,可能只是同一个区域?但是弹性IP——如果分配的话——在云端之外。