Krav: Använd nginx för att blockera vissa IP-adresser från att komma åt webbplatser, såsom crawlers, annonser osv. Eller av policyskäl behöver du blockera åtkomst från en IP-adress i ett visst land.
Blockera specificerad IP-åtkomst
Nginx tillhandahåller två av de mest grundläggande kommandona för maskering och tillåtande av IP-adresser: neka blockering och tillåt tillåta, enligt följande:
Ange katalog för att blockera åtkomst från angivna IP-adresser
I Nginx konfigurationsfil kan du använda platsblock för att matcha specifika URL-vägar. Till exempel vill vi aktivera maskering i URL-vägar som börjar med /foo, där alla URL-vägar som börjar med /foo, såsom /foo/bar och /foo/baz/qux, etc., matchar följande:
Om du villExakt matchning /fooför att använda följande konfiguration:
Du kan också matcha katalogen med regex:
Blockera åtkomst till det angivna landet (regionen).
Ibland vill vi bara tillåta vissa regioner att komma åt vår webbplats. Med tanke på ovanstående två metoder är det återstående problemet hur man får alla IP-segment i en viss region. Vi kan få det från ip2location. Adress:Inloggningen med hyperlänken är synlig.
Välj landet på vänster sida av rutan, välj V4 eller V6 i mitterrutan och välj regeltypen till höger. Ta Japan som exempel:
Ladda ner och packa upp för att få txt-filen,Ta bort den första platsen / { och den sista },Slutligen, lägg till en rad allow all;Byt suffixnamnet från .txt till .conf och ladda upp det till servern, och kom ihåg katalogen där det placerades. (t.ex. /usr/local/nginx/conf/nginx.conf/firewall.conf)
Ändra Nginx-konfigurationsfilen som motsvarar webbplatsen, såsom /foo-katalogen, så att den endast tillåter åtkomst från icke-japanska IP-adresser:
Om du vill att det ska vara platsomfattande kan du skriva till server- eller http-fältet, till exempel:
Ange sedan följande kommando för att ladda om nginx-konfigurationen:
|