Krav: Bruk nginx for å blokkere noen IP-adresser fra å få tilgang til nettsteder, som crawlere, annonser osv. Eller av politiske grunner må du blokkere tilgang fra en IP-adresse i et bestemt land.
Blokker spesifisert IP-tilgang
Nginx gir to av de mest grunnleggende kommandoene for maskering og tillate IP-adresser: nekt å blokkere og la tillate, som følger:
Spesifiser katalog for å blokkere tilgang fra angitte IP-adresser
I Nginx sin konfigurasjonsfil kan du bruke lokasjonsblokker for å matche spesifikke URL-stier. For eksempel ønsker vi å aktivere maskering i URL-stier som starter med /foo, og matche alle URL-stier som starter med /foo, som /foo/bar og /foo/baz/qux, osv., som følger:
Hvis du vilEksakt match /foofor å bruke følgende konfigurasjon:
Du kan også matche katalogen med regex:
Blokker tilgangen til det angitte landet (regionen).
Noen ganger vil vi bare tillate visse regioner å få tilgang til nettsiden vår. Når man kjenner til de to ovennevnte metodene, er det gjenværende problemet hvordan man får alle IP-segmentene i et bestemt område. Vi kan hente det fra ip2location. Adresse:Innloggingen med hyperkoblingen er synlig.
Velg landet på venstre side av boksen, velg V4 eller V6 i midtboksen, og velg regeltypen til høyre. Ta Japan som et eksempel:
Last ned og pakk ut for å få txt-filen,Slett den første plasseringen / { og den siste },Til slutt, legg til en line allow all;Endre navnet på suffikset fra .txt til .conf og last det opp til serveren, og huske mappen det ble plassert i. (f.eks. /usr/local/nginx/conf/nginx.conf/firewall.conf)
Endre Nginx-konfigurasjonsfilen som tilsvarer nettstedet, for eksempel /foo-katalogen, slik at den kun tillater tilgang fra ikke-japanske IP-adresser:
Hvis du vil at det skal være site-wide, kan du skrive til server- eller http-feltet, for eksempel:
Deretter skriver du inn følgende kommando for å laste inn nginx-konfigurasjonen på nytt:
|