You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拒绝含特定URL编码字符的请求?Nginx配置求助

解决Nginx拒绝特定POST请求的问题

你的配置无效的核心原因是:Nginx在处理location匹配时会自动对URI进行URL解码,所以你写的/%21会被解码成/!,导致两种请求都会匹配到同一个规则,无法区分。

要实现拒绝"/%21/Form/create"的POST请求、允许"/!/Form/create"的POST请求,需要利用Nginx的$request_uri变量——这个变量保存的是客户端发送的原始未解码的请求路径,能精准区分两种不同的请求格式。

正确的Nginx配置

将以下代码添加到你的server块中(建议放在其他location规则之前):

if ($request_uri = '/%21/Form/create' && $request_method = POST) {
    return 403;
}

配置说明

  • $request_uri = '/%21/Form/create':精准匹配客户端发送的原始未解码请求路径
  • $request_method = POST:仅针对POST请求生效
  • return 403:返回403禁止访问状态码,你也可以根据需求改为return 444(直接关闭连接)

配置生效后,所有指向/%21/Form/create的POST请求会被拒绝,而正常的/!/Form/createPOST请求可以正常通行。

内容的提问来源于stack exchange,提问作者espenlg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:15:45