【问题标题】:Nginx - How to block all IPs except oneNginx - 如何阻止除一个以外的所有IP
【发布时间】:2016-11-06 04:09:28
【问题描述】:

我是一个 Nginx 新手,我需要一些帮助。 =]

我有一个包含在“$proxy_add_x_forwarded_for”中的 IP 列表,其中包含用逗号分隔的 IP,格式如下:“IP,下一个 IP”。

如果我的 IP 不在此逗号分隔列表中,我想返回 403 错误代码。

我认为最简单的方法是做一个简单的 if 语句说:如果 $proxy_add_x_forwarded_for 不包含我的 IP 返回 403。

我已经尝试了很多年了,但我什么也做不了,谁能帮帮我?听起来这应该很容易。

编辑: 另外,我正在尝试在 location 块中进行设置,因为还有其他使用 Nginx 的配置,并且 IP 限制仅对该特定块有效。

【问题讨论】:

    标签: nginx configuration server


    【解决方案1】:

    假设您的 IP 地址是123.123.123.123,那么如果您的 IP 地址存在,则以下语句将返回 403:

    if ($proxy_add_x_forwarded_for !~ \b123\.123\.123\.123\b) { return 403; }
    

    它使用\b 元字符来强制单词边界(包括数字),以便测试完整的 IP 地址。

    如果需要缩小范围,可以将表达式放在位置块中。

    if 指令是documented here。有关 if 指令的使用,请参阅 this caution。一个有用的正则表达式资源是here

    【讨论】:

      猜你喜欢
      • 2023-01-07
      • 1970-01-01
      • 2011-09-02
      • 2012-12-05
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      相关资源
      最近更新 更多