Nginx rewrite 去 query_string和 分析query实战

本文详细介绍了如何使用Nginx rewrite模块去除query_string及分析query_string中的参数,通过具体的配置示例,展示了如何根据query_string中的参数进行重写,以实现对请求的灵活处理。

 Nginx rewrite 去 query_string和 分析query实战

 location ^~ /R {
         if ( $query_string ~ ^i=(.*)&t=a(.*) ) {
              set $a $1;
              set $b $2;
              rewrite ^/(.*) https://www.xxx.yyy.com.cn:9100/m.html#/home?id=${a}&Type=Asset${b}? permanent;
            }
       rewrite ^/(.*) https://www.xxx.yyy.com.cn:9100/m.html#/home permanent;
   }

注:

1. 一定要在 rewrite 的最后面加 ?号来去掉query_string。如上面的 ?放在了最后的Type=Asset{b}后面。

缺省情况下rewrite会把query_string 补 到新的URI后面的!

2. 如何分析query_string,则见上面

 

### 三级标题:在 Nginx 中配置敏感字段过滤规则以防止 SQL 注入攻击 为了防止类似 SQL 注入的攻击行为,可以通过 Nginx 的请求 URI 过滤机制对传入的查询字符串进行检查,并阻止包含敏感关键字(如 `union select` 或 `concat`)的请求。Nginx 提供了强大的正则表达式匹配功能,可以基于 `$request_uri` 变量进行模式识别并采取相应动作。 以下是一个典型的配置示例,展示了如何通过 `if` 指令正则表达式来拦截含有 SQL 注入特征的 URL 请求: ```nginx server { listen 80; server_name example.com; location / { # 拦截包含 union select 或 concat 等 SQL 注入特征的查询字符串 if ($request_uri ~* (union.*select|concat)) { return 403; # 返回 403 禁止访问 } proxy_pass http://backend; # 转发合法请求到后端服务器 } } ``` 上述配置中使用了不区分大小写的正则匹配 (`~*`) 来检测请求 URI 中是否包含 `union select` 或 `concat` 等关键词,若存在则直接返回 403 错误响应[^2]。 此外,还可以结合更复杂的正则表达式来覆盖更多潜在的 SQL 注入模式,例如匹配常见的 SQL 关键字或特殊符号组合。以下是增强版的配置示例: ```nginx location / { # 阻止常见 SQL 注入特征 if ($request_uri ~* (UNION\s+SELECT|CONCAT|INSERT\s+INTO|UPDATE|DELETE\s+FROM|DROP\s+TABLE|EXEC|xp_cmdshell)) { return 403; } proxy_pass http://backend; } ``` 该配置进一步扩展了 SQL 注入特征词库,涵盖了 `INSERT INTO`、`UPDATE`、`DELETE FROM`、`DROP TABLE`、`EXEC` `xp_cmdshell` 等危险操作指令[^2]。 对于更加复杂的场景,还可以结合 `map` 指令定义黑名单变量,提高可维护性性能优化。例如: ```nginx map $request_uri $block_sql_injection { default 0; ~*(union.*select|concat|insert.*into|update|delete.*from|drop.*table|exec|xp_cmdshell) 1; } server { listen 80; server_name example.com; location / { if ($block_sql_injection) { return 403; } proxy_pass http://backend; } } ``` 此方式将 SQL 注入检测逻辑集中管理于 `map` 块中,提升了配置的清晰度与灵活性[^2]。 需要注意的是,在实际部署过程中应根据具体业务需求调整正则表达式内容,避免误伤正常请求。同时建议定期更新规则库以应对新型攻击手段。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值