Nginx限制IP訪問

一、Nginx限制IP訪問特定域名

  server {
    listen 80;
    server_name example.com;
    deny all;
    allow 192.168.1.0/24;
    allow 10.0.0.0/8;
  }

以上配置中,我們通過deny all來禁止所有IP訪問example.com,然後通過allow指令來允許指定IP段的訪問。

實際上,我們還可以使用更加靈活的模式匹配規則,比如使用通配符,以支持更多的IP模式匹配。例如:

  server {
    listen 80;
    server_name example.com;
    deny all;
    allow 192.168.1.0/24;
    allow 10.0.0.0/8;
    allow 172.16.0.0/12;
    allow 192.168.0.*;
  }

二、Nginx限制IP段訪問

Nginx還可以支持基於IP段的訪問限制。我們可以通過設置雙尖括弧來指定IP範圍。例如:

  location / {
    allow 192.168.0.0/16;
    allow 10.0.0.0/8;
    deny all;
  }

三、Nginx限制IP訪問頻率

在實際應用中,我們常常需要通過控制IP訪問頻率來避免過多的請求對伺服器造成負載壓力。Nginx提供了基於limit_req模塊的請求頻率控制功能,我們可以通過以下示例來限制IP每秒最多請求5次:

  http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;

    server {
      location /api/ {
        limit_req zone=one burst=10 nodelay;
      }
    }
  }

我們通過定義limit_req_zone來設置IP訪問頻率限制規則,包括每秒的請求次數和對應的存儲區域。然後通過location指定匹配規則,並使用limit_req指令來啟用請求頻率控制。

四、Nginx配置限制IP訪問

Nginx提供了很多限制IP訪問的方法,例如使用access模塊或者limit_conn模塊。我們可以通過以下示例來實現對IP的訪問限制:

  http {
    #使用access模塊實現IP訪問限制
    geo $deny_ips {
      default 0;
      192.168.0.0/16 1;
      10.0.0.0/8 1;
    }

    server {
      location / {
        if ($deny_ips){
          return 403;
        }
      }
    }

    #使用limit_conn模塊實現IP並發請求量限制
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    server {
      location / {
        limit_conn addr 10;
      }
    }
  }

五、Linux限制IP訪問

Linux系統也自帶了iptables工具來實現對IP的訪問限制,同時Nginx也可以與iptables進行結合使用,例如以下腳本:

  #允許本地IP段
  sudo iptables -A INPUT -p tcp -s 127.0.0.1/32 --dport 80 -j ACCEPT
  #允許指定IP段
  sudo iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 80 -j ACCEPT
  #禁止其他IP訪問
  sudo iptables -A INPUT -p tcp --dport 80 -j DROP

六、Nginx限制指定IP訪問

有時候我們需要臨時關閉特定IP的訪問,我們可以使用如下配置:

  server {
    listen 80;
    server_name example.com;
    if ($remote_addr != 192.168.1.10){
        return 503;
    }
  }

七、Nginx限制同一IP訪問頻率

除了限制IP訪問頻率之外,我們還可以實現對同一IP的不同請求頻率進行限制。我們可以使用limit_req和limit_conn模塊的組合來實現以上限制,例如:

  http{
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    limit_req_zone $binary_remote_addr zone=req:10m rate=5r/s;

    server {
      location /api/ {
        limit_req zone=req;
        limit_conn addr 5;
      }
    }
  }

八、Nginx限制IP並發量

除了限制請求頻率之外,我們還可以對同一IP的並發請求量進行限制。我們可以使用limit_conn模塊來實現IP並發請求量控制,例如:

  http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;

    server {
      location /api/ {
        limit_conn addr 5;
      }
    }
  }

九、Nginx配置IP埠訪問

我們可以通過以下示例來配置IP和埠的匹配規則:

  server {
    listen 80;
    server_name example.com;
    allow 192.168.0.1:60000;
    deny all;
  }

十、Nginx單個站點限制IP

我們可以通過以下示例來實現對單個站點的IP訪問限制:

  server {
    listen 80;
    server_name example.com;
    allow 192.168.0.0/16;
    deny all;
  }

在實際應用中,我們可以根據需要自由選擇不同的IP訪問限制方法,以滿足複雜的應用需求。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/182409.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-24 06:21
下一篇 2024-11-24 06:21

相關推薦

  • Centos7配置靜態ip

    本文將詳細闡述如何在Centos7系統中配置靜態ip。 一、查看網路介面 在配置靜態ip之前,我們首先需要查看系統中的網路介面,以確定我們需要配置的網卡是哪一個。 ifconfig…

    編程 2025-04-29
  • Python檢測IP連通

    Python是一門強大的編程語言,常用於網路開發、數據分析等領域。IP地址是網路通信的基礎,在網路通信中,有時需要檢測IP地址是否連通。下面將從多個方面介紹Python檢測IP連通…

    編程 2025-04-28
  • Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901解析

    本文將對Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901進行詳細解析,並提供相關代碼示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    編程 2025-04-27
  • Java如何從Nginx下載文件

    本文將從以下幾個方面詳細介紹如何使用Java從Nginx下載文件。 一、準備工作 在Java中下載文件需要使用到Apache HttpClient庫,這個庫是一個基於Java的HT…

    編程 2025-04-27
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • NGINX許可權被拒絕問題

    NGINX是一款常見的Web伺服器軟體,但是在使用中常會遇到「permission denied」許可權被拒絕的問題。下文將從多個方面介紹本問題和解決方法。 一、系統許可權問題 1、檢…

    編程 2025-04-25
  • 關閉nginx命令詳解

    一、linux系統中關閉nginx命令 1、使用ps命令找到nginx的進程ID $ ps -ef | grep nginx 2、發送信號給nginx進程結束 $ kill -QU…

    編程 2025-04-25
  • 詳解 IP 正則表達式

    一、IP 地址基礎知識 在講解 IP 的正則表達式前,我們先來了解一下 IP 地址的基礎知識。IP 是 Internet Protocol 的縮寫,用於標識網路中的設備。IP 地址…

    編程 2025-04-24
  • 深入淺出:理解nginx unknown directive

    一、概述 nginx是目前使用非常廣泛的Web伺服器之一,它可以運行在Linux、Windows等不同的操作系統平台上,支持高並發、高擴展性等特性。然而,在使用nginx時,有時候…

    編程 2025-04-24
  • Mac查看IP地址命令的用法

    一、查看本機IP地址 在Mac系統中,我們可以使用ifconfig命令來查看本機IP地址。具體方法如下: ifconfig 執行以上命令後,會得到如下結果: en0: flags=…

    編程 2025-04-24

發表回復

登錄後才能評論