AWS应用负载均衡器(ALB)Path based routing配置无效返回404求助
AWS ALB 路径路由404问题解决方案
你配置路径路由后返回404的核心原因是ALB默认会将完整的原始请求路径转发给后端目标组的EC2实例,而你的EC2仅在根路径部署了/index.html资源,没有对应请求前缀下的资源。比如你配置了/group1/*的路径规则转发到目标组1,当你访问<ALB地址>/group1/index.html时,EC2收到的请求路径是/group1/index.html,该路径不存在所以返回404。
你已测试的路径规则如下:
可行解决方案
- 方案1:配置ALB路径重写(最推荐)
编辑对应监听器的路径规则,在转发到目标组的同时添加重写路径动作,将匹配到的前缀去除。例如你的路径规则匹配/group1/*,则将路径重写为/${1},这样原始请求/group1/index.html会被重写为/index.html再发送给后端EC2,即可正常访问到根路径的资源,无需修改后端部署配置。 - 方案2:调整后端资源部署路径
按照你配置的路径前缀修改EC2上的资源存放路径,比如对应/group1前缀的目标组EC2,将index.html放到/group1/index.html路径下,对应/group2前缀的目标组EC2将资源放到/group2/index.html路径下,无需修改ALB配置即可正常访问。 - 方案3:调整规则优先级与补全斜杠重定向
如果你配置的是精确路径匹配(如/group1)而非前缀匹配,需要额外添加301重定向规则,将/group1请求重定向到/group1/,避免相对路径资源引用异常;同时确保更长的前缀匹配规则优先级高于更短的前缀规则,避免请求被短前缀规则提前匹配拦截。
验证方法
你可以查看后端EC2的Web服务访问日志确认请求路径是否符合预期,以Nginx为例,执行命令tail -f /var/log/nginx/access.log即可实时查看收到的请求URI,确认是否存在多余的路径前缀。
内容的提问来源于stack exchange,提问作者rachit_verma
相关产品推荐
相关产品推荐

