【问题标题】:How to deny all the URIs except one in Nginx?如何拒绝 Nginx 中除一个之外的所有 URI?
【发布时间】:2020-08-01 22:23:06
【问题描述】:

我有一个域,我只需要接受一个 URL,而所有其他 URL 都应该被阻止。我只需要接受/page?param=something。我正在使用Nginx。任何帮助将不胜感激。

【问题讨论】:

  • 可能类似于:if ($request_uri != /page?param=something) { return 403; }
  • @RichardSmith 无论如何我们可以使用localtion 指令和regex 来实现这一点。我需要验证参数值。
  • location 指令不能用于匹配参数值。
  • @RichardSmith 还有其他选择吗?
  • 您需要使用ifmap 语句检查$request_uri$args$arg_param 变量。两者都可以接受正则表达式。

标签: regex nginx pcre nginx-location nginx-config


【解决方案1】:
map $query_string $is_param {
    ~ param=.+ 1;
}

location ~* /page {
    if ($is_param) {
      allow all;
    }
    return 403;
}

【讨论】:

  • 在我的回答中,我使用了param=.+,它匹配分配给param 参数的任何非零长度字符串。如果您需要匹配某个确切的词,请改用param=word,其中word 是您的确切词。
猜你喜欢
  • 1970-01-01
  • 2018-10-09
  • 2014-01-08
  • 1970-01-01
  • 2013-08-08
  • 2011-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多