Gereksinimler: nginx kullanarak bazı IP'lerin tarayıcılar, reklamlar gibi web sitelerine erişimini engelle. Ya da politika nedenleriyle, belirli bir ülkedeki bir IP adresinden erişimi engellemeniz gerekir.
Belirli IP erişimini engelle
Nginx, IP'leri maskelemek ve izin vermek için en temel iki komutu sunar: engellemeyi engellemeyi engellemeyi ve izin vermeyi izni verme, aşağıdaki gibidir:
Belirlenen IP'lerden erişimi engellemek için dizini belirtin
Nginx'in yapılandırma dosyasında, belirli URL yollarını eşleştirmek için konum blokları kullanabilirsiniz. Örneğin, /foo ile başlayan URL yollarında maskelemeyi etkinleştirmek istiyoruz; /foo/bar ve /foo/baz/qux gibi /foo ile başlayan tüm URL yollarıyla, örneğin /foo/bar ve /foo/baz/qux vb. gibi:
İstersenTam eşleşme /fooaşağıdaki yapılandırmayı kullanmak için:
Ayrıca dizini regex ile eşleyebilirsiniz:
Belirtilen ülkeye (bölgeye) erişimi engelle.
Bazen sadece belirli bölgelerin web sitemize erişmesine izin vermek istiyoruz. Yukarıdaki iki yöntemi bildiğimde, kalan sorun belirli bir bölgedeki tüm IP segmentlerini nasıl alacağımızdır. IP2location'dan alabiliriz. Adres:Bağlantı girişi görünür.
Kutunun sol tarafındaki ülkeyi seçin, orta kutudan V4 veya V6'yı seçin ve sağdaki kural türünü seçin. Örneğin Japonya'yı ele alalım:
Txt dosyasını indirip açın,İlk konumu sil / { ve sonuncusunu },Son olarak, bir satır ekleyin;Eki .txt'dan .conf'a değiştirin ve yerleştirildiği dizini hatırlayarak sunucuya yükleyin. (örneğin /usr/local/nginx/conf/nginx.conf/firewall.conf)
Siteye karşılık gelen Nginx yapılandırma dosyasını, örneğin /foo dizini, yalnızca Japon dışı IP'lerden erişim izni verecek şekilde değiştirin:
Site genelinde olmasını istiyorsanız, örneğin sever veya http alanına yazabilirsiniz:
Sonra nginx yapılandırmasını yeniden yüklemek için aşağıdaki komutu girin:
|