Linux 笔记
docker 与 常用服务
docker 运行 redis
docker 运行 mysql
docker 运行 rabbitmq
docker 部署 MrDoc
docker 部署 wallabag
docker 部署 nextcloud
docker 运行 mindmaster
Docker 常见问题及解决
docker 部署 Standard Notes
ipv6 时代家庭网络的安全性思考
Linux 网络工具
frp vs ngrok vs ssh 隧道
树莓派4 搭建 DNS 服务器
tcpdump & goreplay
Deepin Linux
使用 zsh
Deepin Linux 系统优化
使用 deepin-wine 运行 酷狗音乐
intellij idea
使用 eclipse、vscode 替代 idea
idea 字体设置
nginx 常见问题
nginx 跨域问题处理
nginx 转发导致死循环
nginx 修改请求参数
Manjaro Linux
无法从睡眠唤醒问题修复
树莓派
树莓派系统复制
-
+
首页
nginx 修改请求参数
最近有一个这样的需求:将 client 端请求参数的 udpPort 参数给抹掉,原请求 url 如下: /nacos/v1/ns/instance/list?app=unknown&healthyOnly=false&namespaceId=preview&clientIP=172.16.117.56&serviceName=xxx&udpPort=54795&clusters= 以上是 nacos client 请求服务提供者列表的接口,如果 udpPort 大于 0,则 nacos server 会向这个 ip 的这个端口推送数据,我是期望它不要推送,如果要它不推送,有两个方案: * 防火墙拦截掉 nacos server 的 udp 包 * 使 client 传递的 udpPort 参数小于等于 0,该参数默认为 0 禁用 udp 也简单: ``` sudo iptables -A OUTPUT -p udp -j DROP ``` 禁用后恢复可这样: ``` sudo iptables -L -n --line-number |grep 'udp' sudo iptables -D OUTPUT xxx(序号) ``` 但是这会影响所有服务,所以想了一个别的招,用 nginx 代理,但是删除 udpPort 参数,配置如下: ``` server { listen 6802; listen [::]:6802; server_name _; charset UTF-8; location / { if ($args ~ "^(.*)(&udpPort=.*)(&.*)$") { set $args $1$3; } proxy_pass http://ip:6802; proxy_connect_timeout 60s; proxy_read_timeout 60s; proxy_send_timeout 60s; gzip off; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; proxy_set_header x-wiz-real-ip $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` 这里 $args 等于这串: app=unknown&healthyOnly=false&namespaceId=preview&clientIP=172.16.117.56&serviceName=xxx&udpPort=54795&clusters= 正则表达式的第一部分是任意字符重复一或多次,第二部分是以 `&udpPort=` 开头,然后任意字符重复一或多次,第三部分是以 `& ` 开头,然后任意字符重复一或多次,这样一来,其含义如下: $1:app=unknown&healthyOnly=false&namespaceId=preview&clientIP=172.16.117.56&serviceName=xxx& $2:&udpPort=54795 $3:&clusters= 最后,使用 set $args 将参数调整为 $1$3 即删除 &udpPort=54795 既然都能删除了,那么修改也就很简单了,不是嘛!
十三
2022年5月19日 20:34
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码