主机名不匹配规则时,负载均衡器应返回哪种HTTP状态码?
AWS ALB默认规则的HTTP状态码选择
对于配置了主机头规则的AWS应用负载均衡器,当请求匹配不到任何非默认规则时,默认规则返回404 Not Found是最恰当的选择,理由如下:
- 从HTTP语义来看:404代表请求的资源(此处对应特定主机头绑定的服务)不存在。当用户用未配置的主机头访问时,负载均衡器下根本没有对应这个主机头的后端服务,完全符合“资源未找到”的定义。
- 5xx类状态码的适用场景:500是服务器内部错误,502是网关收到无效响应,503是服务暂时不可用——这些都是服务器端故障类错误,但当前场景下负载均衡器本身运行正常,只是没有匹配到对应的服务配置,并非故障,用5xx会误导客户端认为是服务故障,而非请求本身的问题。
- 额外补充:如果需要更精准的语义,也可以考虑返回400 Bad Request(表示请求的主机头无效),但404在实际场景中更通用,也更符合用户对“找不到对应服务”的直观认知。
内容的提问来源于stack exchange,提问作者Peet Whittaker
相关产品推荐
相关产品推荐

