> HTTP Rewrite 将请求转发给目标服务前修改HTTP请求中指定部分的内容,这个不同于重定向,重定向对用户是可见,重写对用户是不可见的,因为是在服务端进行的。
#### 什么场景需要用到重写
在生产环境中,经常有一些 url 变更的需求,同时又需要做到对请求透明友好,又或者是类似一些 url 路径需要起多一个别名的效果,都是可以通过重写去简单的实现。
#### 通过例子来理解
对于 httpd-service 匹配到前缀是 /check 的请求都会被重写到 nginx-service 的 /api/health,同时参数也将一起重写。
apiVersion networking.istio.io/v1alpha3 kind VirtualService metadata name httpd-vs spec hosts httpd-service httpmatchuri prefix /check rewrite uri /api/health routedestination host nginx-service
和Redirect规则稍有不同的是,Redirect的uri只能替换全部的Path,Rewrite的uri是可以重写前缀的,即如果原来匹配条件是前缀匹配,则修改后只修改匹配到的前缀。