AWS:从外部世界私密化路线

时间:2016-08-18 02:16:37

标签: web-services amazon-web-services amazon-vpc

我有一个当前在EC2实例上运行的Web应用程序,其中MySQL与它一起运行。

我正在构建另一个需要MySQL数据库信息的后端批处理服务。但是,我不希望它直接访问数据库。我想要做的是在Web应用程序中构建一些API路由,即charArr/private/foo只能在内部访问(例如在VPC内),而所有其他路由将继续作为按照正常情况。

我想知道如何设置它?

2 个答案:

答案 0 :(得分:1)

您的VPC使用私有子网(您可以配置地址)。您需要做的就是确保进入您服务器的流量来自同一个子网。

由于您希望现有的Web应用程序为这些专用路由提供服务,因此您需要在代码中查找原始IP地址。 (如果你不知道如何做到这一点,你可能会问一个新问题。)

另一种方法是运行第二个服务(或相同的服务,但在第二个端口上侦听)。如果所有私有流量都来自端口8081(例如)并且所有公共流量都来自端口8080,则您只能使用AWS的安全组来仅允许子网本地流量端口8081和8080的所有流量。

答案 1 :(得分:1)

在Web应用程序前运行http / s Apache反向代理服务器。使用此新的Web层来控制所有内部和外部http / s流量。

外部流量:

  1. 配置Apache以侦听80/443以获取外部流量。
  2. 使用并配置Apache模块Proxy-Pass以反向代理Apache虚拟主机配置中针对端口80/443的所有Web应用程序流量。
  3. 使用80/443虚拟主机配置中的/private指令阻止对<Location >的访问
  4. 更新DNS记录以指向此Web层而不是Web应用程序
  5. 如何适应内部流量:

    1. 让Apache监听新端口,例如8080
    2. 为端口8080配置Apache虚拟主机以反向代理对您的Web应用程序的内部http请求,即/private
    3. 如何保护设计:

      1. 使用AWS安全组阻止端口8080上的任何外部流量。
      2. 通过在Apache 8080虚拟主机配置中使用Apache allow,deny规则来减少安全规则,以确保仅允许来自内部ip-range的流量
      3. 以上的替代Apache配置:

        不要打扰端口8080,并使用80,443进行所有内部和外部流量。内部流量会针对不同的域名发出请求,并且可以使用基于Apache名称的虚拟主机来管理/分离您的内部和外部流量https://httpd.apache.org/docs/current/vhosts/name-based.html