从Nginx迁移至Envoy:正则匹配失效及调试日志开启求助
Envoy正则匹配修复与调试日志开启方案
一、正则匹配问题修复
Nginx的location ~正则是部分匹配(只要URI包含该正则片段即匹配),而Envoy的safe_regex默认是精确匹配整个URI,这是导致匹配失败的核心原因。
修改后的Envoy路由配置如下:
- match: safe_regex: google_re2: {} regex: "^/abc/1/[0-9a-f]+/rest/abc(/.*)?$" route: cluster: app1
说明:
^表示匹配URI开头(/.*)?表示允许路径后跟随任意子路径(和Nginx原配置的匹配行为一致,比如/abc/1/a1b3/rest/abc或/abc/1/a1b3/rest/abc/foo/bar都能匹配)- 如果只需要精确匹配
/abc/1/[0-9a-f]+/rest/abc这个路径,去掉(/.*)?即可
二、开启Envoy调试级日志
有三种常用方式开启调试日志:
1. 启动命令直接指定
启动Envoy时添加日志级别参数:
envoy -c 你的配置文件.yaml -l debug
若只想针对路由组件开启调试(减少日志量),可以指定组件级别:
envoy -c 你的配置文件.yaml -l router:debug,info
2. 配置文件中全局设置
在Envoy配置的根节点添加logging字段:
admin: access_log_path: /dev/null address: socket_address: { address: 127.0.0.1, port_value: 9901 } static_resources: # 你的集群、路由等配置 logging: level: debug
3. 通过Admin接口动态调整
若Envoy已启动,可通过Admin接口(默认9901端口)动态修改日志级别:
curl -X POST http://127.0.0.1:9901/logging?level=debug
同样可以指定组件:
curl -X POST http://127.0.0.1:9901/logging?router=debug
内容的提问来源于stack exchange,提问作者Bored Monkey
相关产品推荐
相关产品推荐

