【问题标题】:access back-end ecs container only from front-end ecs container仅从前端 ecs 容器访问后端 ecs 容器
【发布时间】:2022-01-13 19:58:26
【问题描述】:

在我的项目中限制对后端容器的访问时遇到问题。 我的目标是为客户端打开前端 ecs 容器,并使用 nginx 反向代理将任何带有“/api”路由的请求重定向到后端容器。但是,除了前面描述的后端之外,我不想允许任何访问。 我试图在私有子网中找到后端容器并将其连接到前端,但它不起作用。

BACKEND_ORIGIN var 作为键值对存储在任务定义中,稍后我将使用单独的服务来存储它。正在尝试在其中存储后端 IP。

我在 .conf nginx 文件的下面添加了一部分。

server {
listen 8080;
server_name localhost;

set_by_lua_block $backend_origin {
  return os.getenv('BACKEND_ORIGIN')
}

location /api {
  proxy_pass $backend_origin;
  proxy_redirect off;
  add_header Access-Control-Allow-Origin *;
  proxy_http_version 1.1;
  proxy_buffering off;
}

location / {
  root /usr/share/openresty/html;
  index index.html index.htm;
  try_files $uri $uri/ /index.html;
}

【问题讨论】:

  • 两个容器是在同一个ECS任务还是不同的任务?这些都在 Fargate 上运行?
  • 我对后端和前端有单独的任务。 1 个集群,2 个任务定义,2 个服务。是的,这些都在 fargate 上运行。

标签: amazon-web-services nginx reverse-proxy amazon-ecs aws-fargate


【解决方案1】:

所以你在前端和后端使用相同的域?

我认为您可以做的最简单的方法是使用内部 ALB 作为后端并使用该 ALB 域进行重定向。新的 ALB 将只允许来自前端的流量。

【讨论】:

  • 目前我只处理 IP 地址,但是是的,两个容器都有相同的域。你能解释一下我应该如何为后端配置 alb 吗?
  • 所以你应该有2个alb,1个FE的公共alb和1个BE的内部alb,而不是1,并定义目标组,以便公共流量通过第一个alb调用FE,并且FE 将通过第二个 alb 调用 BE。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-28
  • 2019-12-21
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
相关资源
最近更新 更多