Web services AWS:从外部世界将路线私有化

Web services AWS:从外部世界将路线私有化,web-services,amazon-web-services,amazon-vpc,Web Services,Amazon Web Services,Amazon Vpc,我有一个web应用程序当前运行在EC2实例上,MySQL与它一起运行 我正在构建另一个后端批处理服务,它需要来自MySQL数据库的信息。但是,我不希望它直接访问数据库。我想做的是在web应用程序中构建几个API路由,即/private/foo,/private/bar,这些路由只能在内部(例如在专有网络内)访问,而所有其他路由将继续正常工作 我想知道如何设置它?您的VPC使用私有子网(您可以配置地址)。您需要做的就是确保到达服务器的流量来自同一子网 由于您希望现有webapp为这些私有路由提供服

我有一个web应用程序当前运行在EC2实例上,MySQL与它一起运行

我正在构建另一个后端批处理服务,它需要来自MySQL数据库的信息。但是,我不希望它直接访问数据库。我想做的是在web应用程序中构建几个API路由,即
/private/foo
/private/bar
,这些路由只能在内部(例如在专有网络内)访问,而所有其他路由将继续正常工作


我想知道如何设置它?

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

由于您希望现有webapp为这些私有路由提供服务,因此需要在代码中查找原始IP地址。(如果你不知道怎么做,你可能会问一个新问题。)


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

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

由于您希望现有webapp为这些私有路由提供服务,因此需要在代码中查找原始IP地址。(如果你不知道怎么做,你可能会问一个新问题。)


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

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

对外交通:
  • 将Apache配置为在80/443上侦听外部流量
  • 在端口80/443的Apache virtualhost配置中,使用并配置Apache module Proxy Pass来反向代理所有web应用程序流量
  • 在80/443 virtualhost配置中使用
    指令阻止对
    /private
    的访问
  • 更新DNS记录以指向此web层而不是web应用程序
  • 如何适应您的内部流量:
  • 让Apache监听一个新端口,例如8080
  • 为端口8080配置Apache virtualhost,以将内部http请求反向代理到web应用程序,即
    /private
  • 如何保护设计:
  • 使用AWS安全组阻止端口8080上的任何外部通信
  • 通过在Apache 8080 virtualhost配置中使用Apache
    allow,deny
    规则,加倍遵守安全规则,以确保只允许来自内部ip范围的流量
  • 上述配置的另一种Apache配置:
    不用担心端口8080,所有内部和外部通信都使用80443。内部流量将针对不同的域名发出请求,您的内部和外部流量可以使用基于Apache名称的虚拟主机进行管理/分离

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

    对外交通:
  • 将Apache配置为在80/443上侦听外部流量
  • 在端口80/443的Apache virtualhost配置中,使用并配置Apache module Proxy Pass来反向代理所有web应用程序流量
  • 在80/443 virtualhost配置中使用
    指令阻止对
    /private
    的访问
  • 更新DNS记录以指向此web层而不是web应用程序
  • 如何适应您的内部流量:
  • 让Apache监听一个新端口,例如8080
  • 为端口8080配置Apache virtualhost,以将内部http请求反向代理到web应用程序,即
    /private
  • 如何保护设计:
  • 使用AWS安全组阻止端口8080上的任何外部通信
  • 通过在Apache 8080 virtualhost配置中使用Apache
    allow,deny
    规则,加倍遵守安全规则,以确保只允许来自内部ip范围的流量
  • 上述配置的另一种Apache配置:
    不用担心端口8080,所有内部和外部通信都使用80443。内部流量将针对不同的域名发出请求,并且您的内部和外部流量可以使用基于Apache名称的虚拟主机进行管理/分离因为问题是关于修改应用程序的,但问题中甚至没有对此应用程序的高级描述,所以问题不是关于修改应用程序的。我有一个在EC2上运行的遗留应用程序,它有自己的数据库,我需要构建另一个依赖于该数据库的服务,但我不希望另一个服务直接访问数据库,所以我想在我的应用程序中添加几个端点。假设我有/home、/app、/about等,还有/private/foo和/private/bar。除了以/private开头的路线外,我可以通过互联网访问所有路线。在这种情况下,它们应该只能被运行在同一专有网络内的其他服务访问。对不起,即使是你澄清这种情况的评论也会提出更多的问题。你说的“终点”是什么意思?“建立另一个服务”?我猜您使用的是某种框架——可能是用PHP编写的,实现了这种框架