envoyproxy - 在反向代理中寻找“proxy_set_header”的 Envoy 示例
问题描述
我正在将 Nginx 迁移到 Envoy,但我不知道如何替换这些设置:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header 主机 $http_host;
我已经阅读了 Envoy 关于IT Transprency的文档,但我仍然不知道如何配置它。当我尝试测试上述链接中包含的示例时,出现错误:
无效值 无效类型 URL,未知类型:envoy.extensions.transport_sockets.proxy_protocol.v3.ProxyProtocolUpstreamTransport 类型为 Any)
如果有人可以与我分享一个在 Envoy 中支持上述 3 个 proxy_set_header 等效性的真实示例,我们将不胜感激。
解决方案
从您的 NGINX 片段来看,您可能希望 Envoy 将 XFF 标头添加到向上游服务器发出的请求中?
XFF 标头(即类似 的标头X-Forwarded-For
)与使用 PROXY 协议(确实如此)有所不同ProxyProtocolUpstreamTransport
。PROXY 协议用于在第 4 层 (TCP) 上获得 IP 透明性。XFF 用于第 7 层和 HTTP。
下面是一个例子。xff_num_trusted_hops: 0
告诉 Envoy 丢弃它收到的任何 XFF 标头(如果我们是边缘代理,我们绝对不信任来自 Internet 的 XFF 标头)。use_remote_address: true
告诉 Envoy 为上游请求生成新的 XFF 标头。
- filter_chain_match:
server_names: "foo.example.com"
filters:
- name: envoy.filters.network.http_connection_manager
config:
stat_prefix: ingress_http
codec_type: AUTO
use_remote_address: true
xff_num_trusted_hops: 0
route_config:
name: local_route
virtual_hosts:
- name: vh_foo_example
domains: ["*"]
routes:
- match: { prefix: "/" }
route: {
timeout: 60s,
cluster: srv_upstream
}
http_filters:
- name: envoy.router
推荐阅读
- javascript - 如何在 Reactjs 材料 ui 中正确编写文本字段标签?
- windows - Windows 的 Docker 与 Windows Ubuntu 应用程序中的 Docker?
- javascript - 逻辑或运算符的输入文本字段问题
- sql - 如何从月表中计算月中位数?
- python - 使用 ssh 的树莓派 Python 安卓应用程序
- c# - 在服务器端为给定的 url 生成 pdf
- typo3 - 用于检查特定 list_type 是否在页面上的 TypoScript 条件
- javascript - 如何从用户输入而不是常量值开始计时器并保持我的会话存储仍在工作?
- php - PHP PDO mysql 查询同时使用 column = '$var' 和 column IS NULL
- c# - 在 Angular 中导入 excel 文件并将数据传递到 ASP.NET Core API 项目中