我们把应用部署在K8S上面并接ALB,但是ALB不支持URL重写,所以又使用NGINX进行URL重写,ALB为什么不支持重写呢?
回答不易,求求您采纳点赞哦
ALB支持重定向,但是不支持URL重写。这是因为重定向是在客户端完成的,而重写是在服务器端完成的。ALB更适合做简单的反向代理和负载均衡,而不是高级的Web服务器功能,所以不支持URL重写。使用NGINX作为前置代理可以完成此任务。
先手结论:Nginx支持URL重写,可以使用 rewrite
,ALB支持重定向不支持重写URL。其次你要看我下面写的,来进行区分重写和重定向
--
URL重定向:
URL重定向和URL重写之间的用词差异乍一看可能很细微,但这对于向客户端提供资源具有重要意义。
ASP.NET Core的URL重写中间件能够满足两者的需求。
URL重定向是客户端操作,指示客户端访问另一个地址的资源。这需要往返服务器。 客户端对资源发出新请求时,返回客户端的重定向URL会出现在浏览器地址栏。
如果将 /resource 重定向到 /different-resource,客户端会请求 /resource。服务器通过指示重定向是临时还是永久的状态代码作出响应,表示客户端应该获取 /different-resource 处的资源。客户端在重定向URL处对资源执行新的请求。
--
URL重写:
URL 重写是服务器端操作,提供来自不同资源地址的资源。重写URL不需要往返服务器。 重写的URL不会返回客户端,也不会出现在浏览器地址栏。/resource 重写到 /different-resource 时,客户端会请求 /resource ,并且服务器会在内部提取 /different-resource 处的资源。尽管客户端可能能够检索已重写URL处的资源,但是, 客户端发出请求并收到响应时,并不会知道已重写URL处存在的资源。
--
看完上述的对比,我想你应该更能清晰的知道咋回事,URL重写是服务器端操作,提供不能的资源地址,这个很重要,ALB是客户端操作,不直接访问后端资源,这一条你应该就懂了