Nginx http referer

Nginx http referer control

Bugün sizlere nginx http referer url kontrolü yaparak siteye giriş kontrolü nasıl yapılır konusuna değineceğiz. Nginx konusuna bilmeyenler için, kısaca; Nginx; yüksek eş zamanlı çalışma kabiliyeti, yüksek performans ve düşük hafıza kullanımına odaklanılarak tasarlanmış bir Web sunucusudur.

Örneklendirme

Bir web sitemiz var ve bu web sitemize bir adres üzerinden gelinmedikten sonra siteye giriş izni verilmesini istemiyoruz. xxx.xxxxx.xxx alan adımız var, xxx.yyyyy.xxx sitemize girilebilmek için xxx.xxxxx.xxx adresinden gelmesi şartını koymak istiyoruz nasıl bir yol izlememiz lazım.

Kod Kısmı

location / {
	try_files $uri $uri/ /index.php?$args;
	add_header Strict-Transport-Security "max-age=31536000";
	add_header X-XSS-Protection "1; mode=block" always;
	add_header X-Content-Type-Options "nosniff" always;

    	if ($http_referer !~ ^(.*?(\bxxxxx|yyyyyy|uptimerobot\b)[^$]*)$ ) {
    		return 301 https://www.kurtitasarim.com;
	}

	location ~.*\.(jpeg|jpg|png|gif|bmp|ico|svg|css|js)$ {			
		expires max;
	}
	
	location ~ [^/]\.php(/|$) {
		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		if (!-f $document_root$fastcgi_script_name) {
			return  404;
		}

		fastcgi_pass    unix:/opt/alt/php-fpm73/usr/var/sockets/mintiwo.sock;
		fastcgi_index   index.php;
		include         /etc/nginx/fastcgi_params;
	}

}

Bizim için yukarıda en önemli olan satırımız ise;

if ($http_referer !~ ^(.*?(\bxxxxx|yyyyyy|uptimerobot\b)[^$]*)$ ) {
 	return 301 https://www.kurtitasarim.com;
}

bu kısımda regex ile hem referer adresimiz hemde gelecek adresimizi eklememiz lazım. Burada eğer gelmiş olduğumuz sitemizi buraya eklemez isek tekrar yönlendirmeye girerek kurtitasarim.com adresine gidecektir.

Burada yaptığımız işlem Nginx http referer yöntemi ile gelen ziyaretçiyi kontrol ederek işlemlerimizi belirlemek.

Sonuç

Yukarıdaki adımları uyguladıktan sonra amacımız olan ziyaretçinin geldiği kontrole göre ilgili kuralları uyguladık. Burada if koşulunda bir noktaya değinmek isterim !~ değilse kuralıdır, eşleşme için ise ~ kontrolünü kullanabilirsiniz. Daha detaylı olarak nginx dökümanları okuyabilir veya diğer nginx için kullandığım kuralları inceleyebilirsiniz.

Bilmeyenler için Nginx

Nginx (“engine x”, enciniks olarak telaffuz edilir); yüksek eş zamanlı çalışma kabiliyeti, yüksek performans ve düşük hafıza kullanımına odaklanılarak tasarlanmış bir Web sunucusudur. Aynı zamanda ters vekil sunucusu, yük dengeleyici ve HTTP ön belleği olarak da kullanılabilir.

2002 yılında Igor Sysoev tarafından yazılmış olan Nginx Unix, Linux, BSD türevleri, Mac OS X, Solaris, AIX, HP-UX ve Microsoft Windows işletim sistemleri üzerinde çalışabilir. BSD-like lisansı ile yayımlanan Nginx bir özgür ve açık kaynak kodlu bir yazılımdır.

Netcraft’ın Nisan 2015 Web Sunucusu Anketi’ne göre Nginx, internet üzerindeki tüm “aktif “siteler arasında en yaygın ikinci Web sunucusudur.

Nginx dinamik Web içeriğini FastCGI, SCGI, WSGI ya ad Phusion Passenger modülleri üzerinden sunacak şekilde konfigüre edilebilir ve yazılım yük dengelemesi olarak görev alabilir.[2]

Nginx asenkron ve olaya dayalı programlama yaklaşımı sayesinde yüksek yük altında çok daha yüksek ve güvenilir performans vermektedir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir