Nginx

有什麼辦法可以讓一定範圍內的一組ip訪問我的網站?(Nginx)

  • May 5, 2021

假設,我想允許訪問我的項目的 IP 位於 192.168.1.1 和 192.168.1.40 之間。

Nginx 範例:

 stream {
       #...
       server {
           listen 12345;
           deny   192.168.1.2;
           allow  192.168.1.1/24;
           allow  2001:0db8::/32;
           deny   all;
       }
   }

我必須分別允許每個 IP,或者是否有任何技術可以訪問給定範圍內的 IP?

allowanddeny語句按順序進行評估,直到找到匹配項,因此您可以對 5 個連續語句施加嚴格的to 192.168.1.1inclusive192.168.1.40範圍。

例如:

deny  192.168.1.0;
allow 192.168.1.0/27;
allow 192.168.1.32/29;
allow 192.168.1.40;
deny  all;

192.168.1.0/27表示包含,第一個地址被前面的語句明確拒絕192.168.1.0192.168.1.31

192.168.1.32/29代表包容192.168.1.32192.168.1.39


對於192.168.1.130to的範圍192.168.1.190,首先查看最後一個字節的二進製表示:

130 = 10000010
190 = 10111110

所以這可以通過允許10xxxxxx但首先拒絕1000000x和來表示10111111

例如:

deny  192.168.1.128/31;
deny  192.168.1.191;
allow 192.168.1.128/26;
deny  all;

引用自:https://serverfault.com/questions/1062635