【问题标题】:AWS ALB Create Path-Based Routing - Redirect subdirectory to rootAWS ALB 创建基于路径的路由 - 将子目录重定向到根目录
【发布时间】:2022-01-16 07:07:23
【问题描述】:

我有一个在 AWS 上运行的应用程序,它在 application/ 目录下运行。我想在 AWS 负载均衡器上创建基于路径的路由并将其作为两个应用程序运行,但我收到 404 错误。如何在不在后端执行任何操作的情况下使用 AWS Application Load Balancer 做到这一点?

结构:

  1. domain.com/server1 (AWS 负载均衡器) ---> TargetGroup1 --- > /
  2. domain.com/server2 (AWS 负载均衡器) ---> TargetGroup2 --- > /

简而言之,当我想访问https://lbaddress/test1 地址时,我希望在我的后端(在root folder / 上工作)服务器上运行的软件运行

Nginx 方面,我可以这样做。

location ^~ /server1 {
      rewrite ^/server1(.*)$ $1 last; 
}

This rule is not working,遇到 404 码。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-application-load-balancer


    【解决方案1】:

    AWS ALB 不支持路径重写。当请求domain.name/server1/foo 被转发时,目标主机将看到/server1/foo,而不是/foo。由于您可能没有在目标主机上配置 /server1,因此它将返回 404。

    【讨论】:

    • 我正是需要这个。谢谢。
    【解决方案2】:

    转到您的 ALB 侦听器。在适当的侦听器中单击“查看/编辑规则”。在那里你可以添加你的规则。你想做一个基于路径的路由,所以你要添加这条规则:

    IF PATH is /server1/* THEN Forward to TG1
    IF PATH is /server2/* THEN Forward to TG2
    

    /* 已添加,因此它与路径中的任何内容相匹配,从相应的服务器开始。

    【讨论】:

    • 我已经试过了,我总是遇到 404 代码。当我尝试使用 Nginx 时,如下所示。有用。 location ^~ /server1 { rewrite ^/server1(.*)$ $1 last; }
    猜你喜欢
    • 2014-11-26
    • 1970-01-01
    • 2016-07-18
    • 2021-05-13
    • 1970-01-01
    • 2016-06-25
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    相关资源
    最近更新 更多