您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档。 信息
问题
通过 Apigee Adapter for Envoy 调用时,Envoy 代理失败并显示 HTTP 403 Forbidden
错误。
错误消息
系统会显示以下错误消息:
HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 03 Nov 2020 00:20:10 GMT server: istio-envoy
可能的原因
如果出现以下任一情况,Envoy 代理将引发 HTTP 403
错误:
原因 | 说明 | 适用的问题排查说明 |
---|---|---|
API 产品未启用 | 未针对特定环境启用 API 产品。 | Edge 公有云和私有云用户 |
API 产品中缺少目标服务 URI 路径 | 目标服务的 URI 路径缺失或未添加到 API 产品中的 API 资源下。 | Edge 公有云和私有云用户 |
API 产品中缺少主机名 | Apigee 远程服务目标下的 API 产品中缺少客户端 API 请求中提供的主机名。 | Edge 公有云和私有云用户 |
请求标头中缺少 API 密钥 | API 密钥不会在 x-api-key HTTP 标头中传递。 |
Edge 公有云和私有云用户 |
API 密钥无效 | 作为请求的一部分传递的 API 密钥无效。 | Edge 公有云和私有云用户 |
Apigee Adapter for Envoy 无法与远程服务 API 代理通信 | Apigee Adapter for Envoy 无法与远程服务 API 代理通信。 | Edge 公有云和私有云用户 |
Envoy 代理无法与 Apigee Adapter for Envoy 通信 | Envoy 代理无法与 Apigee Adapter for Envoy 通信 | Edge 公有云和私有云用户 |
准备工作
- 验证您是否从 Envoy 代理收到
403 Forbidden
响应消息。例如:curl -i -H "x-api-key: $API_KEY" http://httpbin:8080/echo HTTP/1.1 403 Forbidden content-length: 19 content-type: text/plain date: Tue, 12 Jan 2021 08:18:08 GMT server: envoy RBAC: access denied
启用调试日志:
确保您已在 Apigee Adapter for Envoy 中启用调试日志,以捕获有关错误的更多详细信息。否则,请停止 Apigee Adapter for Envoy,然后重新启动它,然后使用以下命令启用调试日志:
apigee-remote-service-envoy -c config.yaml -l debug
原因:API 产品未启用
如果在调用 API 调用的特定环境中未启用 Envoy 代理使用的特定 API 产品,则会出现此错误。
诊断
请执行以下步骤以诊断问题:
- 按照上文第 2 步中的说明启用调试日志。
- 检查 Apigee Adapter for Envoy 日志,并验证
Authorizing request
部分下显示以下消息:product: API_PRODUCT_NAME not found
调试日志输出示例:
2021-01-12T08:18:08.124Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:18:08.124Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: 7mQIG... 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:18:08.589Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a0600), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746037188, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:18:08.589Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin:8080 - product: ENVOY-PRODUCT-1 not found
上例表明,未在 Apigee Adapter for Envoy 中找到 API 产品
ENVOY-PRODUCT-1
。如需详细了解 Apigee Adapter for Envoy 日志记录,请参阅 Logging。
- 如果您在向 API 请求授权时看到此消息,很可能是因为您调用 API 的特定环境未启用特定的 API 产品。
- 请执行以下步骤来验证这一点:
- 登录 Edge 界面。
- 在发布 > API 产品页面上,点击用于配置 Apigee Adapter for Envoy 的特定 API 产品。
- 验证您发出 API 请求的特定环境在 API 产品中是否处于启用状态。
- 如果 API 产品中未启用特定环境,这就是导致此问题的原因。
- 如果特定环境已启用,请参阅 原因:API 产品中缺少目标服务 URI 路径。
分辨率
如果 API 产品中未启用特定环境,请执行以下步骤来解决问题:
- 登录 Edge 界面。
- 在发布 > API 产品页面上,点击您用于配置 Apigee Adapter for Envoy 的特定 API 产品。
- 在 API 产品 > 产品名称页面上,点击修改。
- 选中相关环境复选框,启用您要在其中发出 API 请求的特定环境。
- 点击保存。
原因:API 产品中缺少目标服务 URI 路径
如果 Envoy 代理使用的特定 API 产品中未指定目标的 URI 路径,则会出现此错误。
诊断
请执行以下步骤以诊断问题:
- 按照上文第 2 步中的说明启用调试日志。
-
检查 Apigee Adapter for Envoy 日志,并验证
Authorizing request
部分下与特定目标关联的特定 API 产品是否显示以下消息:no path: REQUEST_URI_PATH
调试日志输出示例:
2021-01-12T08:09:02.604Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:09:02.605Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:09:02.605Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo1 target: httpbin:8080 - product: ENVOY-PRODUCT-1 no path: /echo1 2021-01-12T08:09:02.605Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
示例输出会显示以下消息:
no path: /echo1
这表示在 API 产品
ENVOY-PRODUCT-1
中找不到路径/echo1
。 - 如果您在适用于 Envoy 的 Apigee Adapter 调试日志中看到消息
no path: REQUEST_URI_PATH
,这就是导致此问题的原因。如果不正确,请参阅原因:API 产品中缺少主机名。
分辨率
如果特定请求 URI 未添加到特定目标的 API 产品中,请执行以下步骤来解决问题:
- 登录 Edge 界面。
- 在发布 > API 产品页面上,点击用于配置 Apigee Adapter for Envoy 的特定 API 产品。
- 在 API 产品 > 产品名称页面上,点击修改。
- 在 API 资源窗格中,将 API 请求 URI 添加到 API 产品。
- 监控 Apigee Adapter for Envoy 日志,并等待适用于 Envoy 的 Apigee Adapter for Envoy 提取更新后的 API 产品。之后,再次发送 API 请求以验证修复情况。
原因:API 产品中缺少主机名
如果目标主机名和端口组合未添加到 Envoy 代理使用的特定 API 产品中,则会发生此错误。
诊断
请执行以下步骤以诊断问题:
- 按照上文第 2 步中的说明启用调试日志。
检查 Apigee Adapter for Envoy 日志,并验证
Authorizing request
部分下与特定目标关联的特定 API 产品是否显示以下消息:no targets: HOSTNAME:PORT
调试日志输出示例:
2021-01-12T08:12:06.019Z DEBUG auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil) 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:125 using api key from request 2021-01-12T08:12:06.019Z DEBUG auth/auth.go:157 Authenticate success: &auth.Context{Context:(*server.Handle r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"}, Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[] string{""}, APIKey:"7mQIG..."} 2021-01-12T08:12:06.019Z DEBUG product/manager.go:89 Authorizing request: products: [ENVOY-PRODUCT-1] scopes: [] operation: GET /echo target: httpbin1:8080 - product: ENVOY-PRODUCT-1 no targets: httpbin1:8080 2021-01-12T08:12:06.020Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
以上示例显示,在 API 产品
ENVOY-PRODUCT-1
中找不到主机名和端口组合httpbin1:8080
。- 如果 Apigee Adapter for Envoy 日志在授权请求时包含带有消息
no targets: HOSTNAME:PORT
的条目,则这就是问题的原因。如果不是,请转到原因:请求标头中缺少 API 密钥。
分辨率
如果目标主机名和端口组合未添加到 API 产品中,请执行以下步骤来解决问题:
- 登录 Edge 界面。
- 在发布 > API 产品页面上,点击用于配置 Apigee Adapter for Envoy 的特定 API 产品。
- 在 API 产品 > 产品名称页面上,点击修改。
在 Apigee 远程服务目标窗格中,添加目标主机名和端口,然后点击保存。
如果您在界面中没有看到 Apigee 远程服务目标部分,请使用 Edge API 为 API 产品添加名为
apigee-remote-service-targets
的自定义属性并添加 HOSTNAME:PORT 值。例如:curl https://api.enterprise.apigee.com/v1/organizations/$ORG/apiproducts/$ENVOY_PRODUCT \ -X GET \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type:application/json" \ -d \ { "apiResources": [ "/echo", "/verifyApiKey" ], "approvalType": "auto", "attributes": [ { "name": "access", "value": "public" }, { "name": "apigee-remote-service-targets", "value": "localhost:8080" } ], "createdAt": 1610435989556, "createdBy": "---masked---", "description": "", "displayName": "ENVOY-PRODUCT-1", "environments": [ "test" ], "lastModifiedAt": 1612234134060, "lastModifiedBy": "---masked---", "name": "ENVOY-PRODUCT-1", "proxies": [ "remote-service" ], "scopes": [] }
- 完成上述任务后,监控适用于 Envoy 的 Apigee Adapter 日志,并等待适用于 Envoy 的 Apigee Adapter 提取更新后的 API 产品。之后,再次发送 API 请求以验证修复情况。
原因:请求标头中缺少 API 密钥
如果未将 API 密钥作为请求标头的一部分传递,就会出现此错误。
诊断
请执行以下步骤以诊断问题:
- 按照上文第 2 步中的说明启用调试日志。
- 检查 Apigee Adapter for Envoy 日志,并验证
Authenticate error
部分下是否显示[missing authentication]
消息。调试日志输出示例:
2021-01-12T08:20:31.461Z DEBUG auth/auth.go:98 Authenticate: key: , claims: map[string]interface {}(nil) 2021-01-12T08:20:31.461Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler) (0xc0001a0600), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [missing authentication] 2021-01-12T08:20:31.461Z DEBUG server/authorization.go:205 sending denied: UNAUTHENTICATED 2021-01-12T08:20:32.448Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header : :authority
上面显示的示例输出包含消息
[missing authentication]
。此消息表示 API 密钥未作为请求标头的一部分进行传递。 - 如果 Apigee Adapter for Envoy 日志在
Authenticate error
部分下包含带有[missing authentication]
消息的日志条目,这就是问题的原因。如果不是,请转到原因:API 密钥无效。
分辨率
如果适用于 Envoy 的 Apigee Adapter 日志中显示错误 [missing authentication]
,请执行以下步骤来解决问题:
- 检查客户端是否使用 API 请求中的 HTTP 标头
x-api-key
发送了 API 密钥。否则,请在 HTTP 标头x-api-key
中请求客户端发送 API 密钥。 - 检查 Apigee Adapter for Envoy 配置文件,并验证默认 API 密钥标头名称
x-api-key
是否已更改,例如:apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | global: tls: ... tenant: ... auth: target_header: api-key
在上面的示例中,默认的 API 密钥标头名称已修改为
api-key
。在这种情况下,您需要将 API 密钥作为标头api-key
的一部分传递。 - 如果默认的 API 密钥标头名称已更改,请请求客户端使用更新后的 API 密钥标头名称,然后发送另一个 API 请求,验证能否解决问题。
原因:API 密钥无效
如果将无效的 API 密钥作为请求标头的一部分传递,则会出现此错误。
诊断
请执行以下步骤以诊断问题:
- 按照上文第 2 步中的说明启用调试日志。
- 检查 Apigee Adapter for Envoy 日志,并验证
Authenticate error
部分下是否显示消息[permission denied]
。这通常在适配器获取 API 密钥后显示,该消息由消息fetchToken fetching: API_KEY
指示。调试日志输出示例:
2021-01-12T05:01:07.198Z DEBUG auth/auth.go:98 Authenticate: key: 123, claims: map[string]interface {}(nil) 2021-01-12T05:01:07.198Z DEBUG auth/verify_api_key.go:106 fetchToken fetching: API_KEY 2021-01-12T05:01:09.102Z DEBUG server/header_context.go:68 No context header x-apigee-api, using target header: :authority 2021-01-12T05:01:09.831Z DEBUG auth/auth.go:159 Authenticate error: &auth.Context{Context:(*server.Handler)(0xc0001640c0), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [permission denied] 2021-01-12T05:01:09.832Z DEBUG server/authorization.go:228 sending ok (actual: PERMISSION_DENIED)
在此示例中,API 请求中发送的 API 密钥无效。
- 如果 Apigee Adapter for Envoy 日志的
Authenticate error
部分下包含[permission denied]
的日志条目,则表示作为请求一部分传递的 API 密钥无效,这是问题的原因。如果不是,请转到原因:Apigee Adapter for Envoy 无法与远程服务 API 代理通信。
分辨率
如果在 Apigee Adapter for Envoy 日志的 Authenticate
error
部分下看到消息 [permission denied]
,请执行以下步骤来解决问题:
- 对照在与 API 产品相关联的应用中找到的 API 密钥值,检查 API 请求中发送的 API 密钥。
- 如果客户端使用的 API 密钥无效,请要求客户端发送有效的 API 密钥。
- 如果客户端使用的 API 密钥有效,但您仍然看到 HTTP
403
错误,请联系 Apigee Edge 支持团队以进一步调查此问题。
原因:Apigee Adapter for Envoy 无法与远程服务 API 代理通信
如果配置的远程服务主机无效,则当 Apigee Adapter for Envoy 无法与远程服务 API 代理通信时,将出现此错误。
诊断
请执行以下步骤以诊断问题:
- 按照上文第 2 步中的说明启用调试日志。
-
检查 Apigee Adapter for Envoy 日志,并验证您是否看到以下消息:
Error retrieving products: REQUEST_URI: no such host
调试日志输出示例:
2021-01-12T08:29:06.499Z DEBUG product/manager.go:188 retrieving products from: https://foo/remote-service/products 2021-01-12T08:29:06.505Z ERROR product/manager.go:164 Error retrieving products: GET "https://foo/remote-service/pro ducts": dial tcp: lookup foo on 169.254.169.254:53: no such host github.com/apigee/apigee-remote-service-golib/product.(*manager).start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/product/manager.go:164 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Run /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:87 github.com/apigee/apigee-remote-service-golib/util.(*Looper).Start.func1 /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:59
在此示例中,Apigee Adapter for Envoy 无法与远程服务 API 代理通信,因为远程服务器 API 代理网址中提供的主机名无效(如错误
no such host
所示)。 - 如果 Apigee Adapter for Envoy 日志包含带有消息
no such host
的日志条目,那么这就是问题的原因。如果不是,请转到 原因:Envoy 代理无法与 Apigee Adapter for Envoy 通信。
分辨率
如果 Apigee Adapter for Envoy 日志中显示上述错误,请执行以下步骤来解决问题:
检查 Apigee Adapter for Envoy 配置文件,并验证给定的远程服务 API 代理网址是否有效。
如果不是,请停止 Apigee Adapter for Envoy,修复配置文件中的远程服务 API 代理网址,启动 Apigee Adapter for Envoy,然后发送另一个 API 请求并验证修复情况。
示例配置:
apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: internal_api: https://istioservices.apigee.net/edgemicro remote_service_api: https://ORG-ENV.apigee.net/remote-service org_name: ORG env_name: ENV key: KEY secret: SECRET
- 验证
remote-service
API 代理是否已在相关的 Edge 环境中部署。如果没有,请在相关的 Edge 环境中部署remote-service
API 代理,然后重试。 - 验证 Apigee Adapter for Envoy 与
remote-service
API 代理端点之间的网络连接。如果发现任何网络连接问题,请与您的网络团队联系,尝试解决问题。
原因:Envoy 代理无法与 Apigee Adapter for Envoy 通信
诊断
请执行以下步骤以诊断问题:
确保您已在 Envoy 中启用调试日志。如果不是,请停止 Envoy 并重新启动,以启用调试日志。然后发送另一个 API 请求。
独立部署:
envoy -c envoy-config.yaml -l debug
基于 Kubernetes/Istio 的部署:
kubectl -n=istio-system get pods kubectl -n=istio-system exec -it INGRESS_GATEWAY_NAME bash -- curl -X POST localhost:15000/logging?connection=debug
- 检查 Apigee Adapter for Envoy 日志,并验证是否存在包含以下消息的日志条目:
connecting to APIGEE_ENVOY_ADAPTER_HOST:5000
后跟:
upstream connect error or disconnect/reset before headers. reset reason: ACTUAL_REASON
调试日志输出示例:
[2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:769] [C4] connecting to 127.0.0.1:5000 [2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:785] [C4] connection in progress [2021-03-23 05:44:41.868][1303661][debug][http2] [external/envoy/source/common/http/http2/codec_impl.cc:1173] [C4] updating connection-level initial window size to 268435456 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:634] [C4] delayed connection error: 111 [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:203] [C4] closing socket: 0 [2021-03-23 05:44:41.869][1303661][debug][client] [external/envoy/source/common/http/codec_client.cc:96] [C4] disconnect. resetting 0 pending requests [2021-03-23 05:44:41.869][1303661][debug][pool] [external/envoy/source/common/conn_pool/conn_pool_base.cc:314] [C4] client disconnected, failure reason: [2021-03-23 05:44:41.869][1303661][debug][router] [external/envoy/source/common/router/router.cc:1031] [C0][S6149963213555558594] upstream reset: reset reason: connection failure, transport failure reason: [2021-03-23 05:44:41.869][1303661][debug][http] [external/envoy/source/common/http/async_client_impl.cc:100] async http request response headers (end_stream=true): ':status', '200' 'content-type', 'application/grpc' 'grpc-status', '14' 'grpc-message', 'upstream connect error or disconnect/reset before headers. reset reason: connection failure'
上面的示例显示,由于
connection failure
的原因,Envoy 无法与 Apigee Adapter for Envoy 通信。 - 导致
connection failure
的原因可能有多种。下面我们来分别介绍每种情景。
场景 1:适配器进程未运行
如果 Apigee Adapter for Envoy 进程未运行,则可能会发生此错误。
- 执行以下命令,验证 Apigee Adapter for Envoy 进程是否正在运行。如果 Apigee Adapter for Envoy 进程正在运行,则以下命令的结果应该会列出它。
ps -ef | grep apigee-remote-service-envoy
- 如果它未运行,这就是问题的原因。
分辨率
- 如果 Apigee Adapter for Envoy 进程未运行,请启动 Apigee Adapter for Envoy。
- 再次发出 API 请求,验证问题是否已解决。
场景 2:适配器进程未在特定端口上进行监听
如果 Apigee Adapter for Envoy 进程没有监听特定端口,则可能会发生此错误。
如果 Apigee Adapter for Envoy 进程正在运行,请验证是否有套接字在监听端口 5000:APIGEE_ENVOY_ADAPTER_HOST:5000
。您可以运行 netstat
命令来验证这一点:
sudo netstat -lnp | grep 5000
示例输出:
sudo netstat -lnp | grep 5000 tcp6 0 0 :::5000 :::* LISTEN 1596530/./apigee-re
如果端口 5000 上没有监听套接字,则可能是出现该问题的原因。
分辨率
- 停止 Apigee Adapter for Envoy,然后重新启动。
- 再次发出 API 请求,验证问题是否已解决。
场景 3:Envoy 与 Apigee Adapter for Envoy 之间的网络连接
- 验证 Envoy 与 Apigee Adapter for Envoy 之间的网络连接:
ssh $ENVOY_HOST telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
如果 Telnet 可以与 Apigee Adapter for Envoy 建立 TCP 连接,则系统将显示类似于以下内容的输出:
telnet $APIGEE_ENVOY_ADAPTER_HOST 5000 Trying ::1... Connected to localhost. Escape character is '^]'.
- 如果您在 Telnet 上观察到错误
Connection timed out
,则表示 Envoy 和 Apigee Adapter for Envoy 之间存在网络连接问题。
分辨率
如果您在 Envoy 和 Apigee Adapter for Envoy 之间发现任何网络连接问题,请与您的网络团队联系并尝试解决问题。
如果问题仍然存在,请参阅必须收集诊断信息。
必须收集的诊断信息
如果在按照上述说明操作后问题仍然存在,请收集以下诊断信息,然后与 Apigee Edge 支持团队联系:
-
使用的 Apigee 产品:
示例:Apigee Edge Cloud、Apigee OPDK、Apigee hybrid、Apigee X
- Apigee 组织和环境
使用 Edge API 读取的 API 产品定义:
curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT
参考文档:Apigee Edge API
使用 Apigee Edge 界面在
remote-service
API 代理中启动跟踪会话。重现此问题并分享跟踪会话 XML 文件。适用于 Envoy 的 Apigee Adapter 日志(与给定时间段相关的完整日志)
独立部署:
# by default Apigee Envoy write logs to stdout and stderr, check your deployment configuration and collect logs accordingly
基于 Kubernetes/Istio 的部署:
kubectl -n=apigee get pods kubectl -n=apigee logs APIGEE_REMOTE_SERVICE_ENVOY_POD_NAME > apigee-remote-service-envoy.log
- 使用
curl
命令发送到 Envoy 代理的 API 请求(curl
命令的完整输出):curl -v ENVOY_PROXY_ENDPOINT
- 使用
curl
命令发送到目标服务的 API 请求(curl
命令的完整输出):curl -v TARGET_SERVICE_ENDPOINT