4. 直接响应配置

直接响应指Sidecar代理无需转发请求至后端服务,直接向客户端返回预设响应内容和状态码,适用于拦截无效请求、返回默认结果、降级兜底等场景。

4.1 核心配置示例

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: demo-service-vs
  namespace: default
spec:
  hosts:
  - demo-service
  http:
  - match:
    - uri:
        exact: /health/check
    directResponse:
      status: 200 # 响应状态码
      body: # 响应体内容
        string: '{"status":"healthy","code":200}' # 字符串格式响应
    # 直接响应场景下无需配置route字段

4.2 降级兜底示例

http:
- match:
  - uri:
      prefix: /api
  route:
  - destination:
      host: demo-service
      subset: v1
    retries: # 重试失败后触发直接响应
      attempts: 2
      perTryTimeout: 1s
  - directResponse: # 兜底响应
      status: 503 # 响应状态码
      body:
        string: '{"msg":"service temporarily unavailable","code":503}'

4.3 操作注意事项

  • 直接响应的响应体仅支持字符串格式,若需JSON响应需手动格式化字符串,确保语法正确。

  • 建议仅在降级、健康检查等简单场景使用,复杂响应需通过后端服务处理。

作者:叶奕珺  创建时间:2026-01-23 14:45
最后编辑:叶奕珺  更新时间:2026-01-30 18:08