
# Envoy Gateway与NGINX Ingress功能对比
在CCE集群中，Envoy Gateway（数据平面为Envoy）与NGINX Ingress均用于实现外部流量路由、负载均衡等能力。本文主要对比NGINX Ingress与Envoy Gateway在各项功能上的差异，帮助您完成业务选型和迁移规划。
#### 流量路由（Routing）
#### 基础路由
| NGINX Ingress功能（通过注解实现） | Envoy Gateway（通过 Gateway API实现） | 实现方式差异与说明                                                                                |
|:---|:---|:---|
| Host路由                  | 支持                              | Envoy Gateway通过HTTPRoute的hostnames字段实现                                                   |
| Path路由（prefix/exact）    | 支持                              | Envoy Gateway通过HTTPRoute的rules.matches.path字段实现                                          |
| 配置HTTPS证书               | 支持                              | Envoy Gateway通过Gateway的listeners.tls字段引用Secret实现                                         |
| HTTP重定向到HTTPS           | 支持                              | Envoy Gateway通过HTTPRoute的RequestRedirect过滤器实现                                            |
| 多后端服务转发                 | 支持                              | Envoy Gateway通过HTTPRoute的backendRefs字段实现，支持多个后端                                          |
| 多端口监听                   | 支持                              | Envoy Gateway通过Gateway的listeners字段实现                                                     |
| 配置HTTPS协议的后端服务          | 支持                              | 通过EnvoyGateway扩展资源BackendTLSPolicy实现                                                     |
| 配置gRPC协议的后端服务           | 支持                              | 通过GRPCRoute资源实现，详情请参见<https://gateway.envoyproxy.io/latest/tasks/traffic/grpc-routing/>。 |
   
#### 请求/响应修改
| NGINX Ingress功能（通过注解实现） | Envoy Gateway（通过 Gateway API实现） | 实现方式差异与说明                                                       |
|:---|:---|:---|
| 路径重写（Rewrite）           | 支持                              | 通过HTTPRoute的URLRewrite过滤器实现。                                    |
| 重定向                     | 支持                              | Envoy Gateway通过HTTPRoute的RequestRedirect过滤器实现。                  |
| 请求头增删改                  | 支持                              | Envoy Gateway通过HTTPRoute的RequestHeaderModifier过滤器实现。            |
| 响应头增删改                  | 支持                              | Envoy Gateway通过HTTPRoute的ResponseHeaderModifier过滤器实现。           |
| 注入自定义Nginx片段（snippet）   | 不支持                             | Envoy Gateway无Nginx snippet概念，可通过EnvoyPatchPolicy资源修改Envoy底层配置。 |
   
#### 上游策略
| NGINX Ingress功能（通过注解实现）   | Envoy Gateway（通过 Gateway API实现） | 实现方式差异与说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|
| 超时（connect/read/send）     | 支持                              | Envoy Gateway通过HTTPRoute的timeouts字段或者Envoy Gateway的扩展资源BackendTrafficPolicy实现。 Envoy实现方式不同，Envoy超时机制更精细，配置字段与Nginx存在差异。                                                                                                                                                                                                                                                                                                                                  |
| 重试（retry）                 | 支持                              | 通过Envoy Gateway的扩展资源BackendTrafficPolicy实现： - retry.numRetries（最多重试次数）  - retry.retryOn（重试条件）  - retry.perRetry.timeout（单次重试超时时间）                                                                                                       |
| 负载均衡算法（RR/least_request等） | 支持                              | 通过Envoy Gateway的扩展资源BackendTrafficPolicy的loadBalancer.type字段实现： - LeastRequest（默认随机挑选两个实例，将请求发送给当前活跃请求数最少的后端实例）  - ConsistentHash（一致性哈希）  - Random（随机）  - RoundRobin（轮询）   |
| 连接池/最大连接/熔断等              | 支持                              | 通过Envoy Gateway的扩展资源 BackendTrafficPolicy实现： - circuitBreaker.maxConnections：限制Envoy能与上游服务**建立的最大TCP连接数**。  - circuitBreaker.maxParallelRequests：限制Envoy与上游服务之间的**最大并发请求数**。达到阈值后，新请求将直接失败。                                                                                                         |
| Sticky session（Cookie 粘性） | 支持                              | Envoy Gateway通过一致性哈希负载均衡和StatefulSession扩展实现。                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
#### 灰度与流量控制
| NGINX Ingress功能（通过注解实现） | Envoy Gateway（通过 Gateway API实现） | 差异与说明                                                                                      |
|:---|:---|:---|
| 按权重分流                   | 支持                              | Envoy Gateway通过HTTPRoute的backendRefs.weight字段实现。                                           |
| 按Header/Query条件分流       | 支持                              | Envoy Gateway通过HTTPRoute的matches字段（headers/queryParams）实现。                                 |
| 按Cookie分流               | 支持                              | Envoy Gateway通过HTTPRoute的matches字段（匹配Cookie Header）实现。                                     |
| Mirror（流量镜像）            | 支持                              | Envoy Gateway通过HTTPRoute的RequestMirror过滤器实现。                                               |
| 跨域访问                    | 支持                              | 通过SecurityPolicy资源配置CORS，详情请参考<https://gateway.envoyproxy.io/latest/tasks/security/cors/>。 |
   
#### 安全
#### TLS加密配置
| NGINX Ingress功能（通过注解实现） | Envoy Gateway（通过 Gateway API实现） | 差异与说明                                      |
|:---|:---|:---|
| TLS版本/加密套件              | 支持                              | 通过Envoy Gateway的扩展资源ClientTrafficPolicy实现。 |
   
#### 认证鉴权
| NGINX Ingress功能（通过注解实现） | Envoy Gateway（通过 Gateway API实现） | 差异与说明                                                 |
|:---|:---|:---|
| Basic Auth              | 支持                              | 通过Envoy Gateway的扩展资源SecurityPolicy的basicAuth字段实现。     |
| 外部认证 （OAuth2/OIDC/SSO）  | 支持                              | 通过Envoy Gateway的扩展资源SecurityPolicy的oidc字段实现。          |
| 基于路径/方法的RBAC            | 支持                              | 通过Envoy Gateway的扩展资源SecurityPolicy的authorization字段实现。 |
   
#### 限流/防护
| NGINX Ingress功能（通过注解实现） | Envoy Gateway（通过 Gateway API实现） | 差异与说明                                                           |
|:---|:---|:---|
| 限流（基于 IP/Header/key）    | 支持                              | 通过Envoy Gateway的扩展资源BackendTrafficPolicy实现，支持全局限流和本地限流。         |
| 连接数限制/并发限制              | 部分支持                            | 通过Envoy Gateway的扩展资源ClientTrafficPolicy和BackendTrafficPolicy实现。 |
| IP白名单/黑名单               | 支持                              | 通过Envoy Gateway的扩展资源SecurityPolicy的authorization字段实现。           |
   
