nginx load
2 Nisan 2020

nginx load işlemin kullanıcı ip adresi alma

ile kurtitasarim

Merhabalar virüs ile evde kalış süresi uzaması ile beraber yazılar biraz artacak gibi :). Bugün sizlere nginx load işlemin kullanıcı ip adresi alma nasıl yapılmakta kısaca onu aktarmaya çalışacağım.

Konuya başlamadan önce!

Nginx ile alakalı konuya girmeden önce nginx nedir? load balancer nedir gibi konuları merak ediyorsunuz linkleri inceleyebilirsiniz.

Kullanıcı ip adresi ne işe yarayacak gibi soru soran var ise 🙂 arkadaşlar sizden gelen ziyaretçilerin ip adreslerini ve işlemlerini saklamanızı isterler veya ip bazlı filtreleme işlemleri beklenebilir bu durumda kullanıcı ip adresini ihtiyacınız bulunmaktadır.

Dikkat : aşağıda *.conf dosyalarında değişiklikler yapılacaktır. Bu işlemleri yapmadan önce muhakkak yedeklemesini yapınız.

cp /etc/nginx/conf.d/*.conf /etc/nginx/conf.d/*.conf.backup

Başlayalım

ilk olarak load işlemini yapacağımız makinamıza gelelim. Bu kısımda vhosts olarak oluşturduğumuz *.conf dosyamızı açalım ve aşağıdaki şekilde bir düzenleme yapalım.

location / {
                 try_files $uri $uri/ /index.php?$query_string;
                proxy_set_header Host            $host;
            	proxy_set_header X-Real-IP       $remote_addr;
            	proxy_set_header X-Forwarded-For $remote_addr;
		#try_files $uri $uri/ /index.html;

        }

Yukarıda yaptığım işlem ana makinama yönlendirme esnasında header bilgisine Real-IP bilgisini eklemek oldu. Bu kısımda dilediğiniz gibi çoğaltma yapabilirsiniz fakat benim ihtiyacım ip adresiydi.

Gelelim apache makinamıza

Bu kısımda aslında aynı işlemleri uyguluyorum.

location / {
                 try_files $uri $uri/ /index.php?$query_string;
                proxy_set_header Host            $host;
            	proxy_set_header X-Real-IP       $remote_addr;
            	proxy_set_header X-Forwarded-For $remote_addr;
		#try_files $uri $uri/ /index.html;

        }

Bu kısma kadar tüm işlemleri aynı şekilde yapılandırdıysanız artık ip kısmını almak için kullanacağınız php komutunu yazabilirim.

(isset($_SERVER["HTTP_X_REAL_IP"]) && config('app.env') !== "local" ? $_SERVER["HTTP_X_REAL_IP"] : $_SERVER["REMOTE_ADDR"]);

Yukarıda header’da isset fonksiyonu ile HTTP_X_REAL_IP parametresinin olup olmadığını kontrol ediyoruz, parametre geliyor ise parametreyi kullanıyoruz parametre bulunmadıysa REMOTE_ADDR ile header’dan gelen ip bilgisini çıktı olarak alıyoruz.

Bu kısma kadar basit bir şekilde anlatıp yapmak istedim, anlamadığınız takıldığınız yerler olması halinde yorum olarak sorabilirsiniz, mümkün olduğunca cevaplayıp yardımcı olmaya çalışacağım.