4

我需要为我的网站使用外部 Web API,他们问我请求来自的 IP 地址是什么。关键是我的 Web 应用程序在更多 Amazon EC2 实例上进行了扩展,因为它是使用配置了自动扩展的 Elastic Beanstalk 部署的。

解决问题的最佳解决方案是什么?

我能想到的最好的事情是设置一个微型实例,将一个弹性 IP 与其关联,并将其用作 HTTP 代理。有更好的解决方案吗?

我确定我不是唯一一个遇到这个问题的人,但我在 stackoverflow 上找不到像我这样的另一个问题。许多电子商务网站通常使用外部支付系统,要求请求来自一个或多个特定 IP 地址...

谢谢你。

更新- 感谢@David,我确实使用 Apache 模块 mod_proxy 设置了 HTTP 代理。如何配置它以便只有我的 EC2 实例可以访问它?我的 EC2 实例是在 Auto Scaling 时动态创建的。

ProxyRequests On                                                                                                                                                                   

<Proxy *>                                                                                                                                                                          
 Order deny,allow                                                                                                                                                                  
 Deny from all                                                                                                                                                                     
 Allow from ???                                                                                                                                               
</Proxy>
4

3 回答 3

2

只需使用(转发)代理,Apache2 就可以做到这一点。默认情况下,请求将来自代理的 IP 地址(如果服务正在查看“REMOTE_ADDR”)。一些代理添加“HTTP_X_FORWARD_FOR”来指示请求发起的客户端的真实 IP,但我怀疑您的服务会检查这一点。

于 2012-05-07T12:50:17.837 回答
1

设置虚拟私有云 (VPC) 以将实例 IP 隔离到 /24 网络,然后使用 AWS 安全组来隔离对您的 EC2 实例的访问。

于 2012-07-31T20:20:13.333 回答
0

我会使用 Nginx 作为反向代理而不是 Apache,因为 Nginx 的占用空间更小,并且事件发生,因此可以处理更多的流量。有关更多详细信息,请参阅此博客文章: http ://readystate4.com/2012/07/08/nginx-the-non-blocking-model-and-why-apache-sucks/

于 2013-02-07T05:52:11.920 回答