Nginx Reverse Proxy Server olarak konumlandırılmak istenebilir. Nginx aynı zamanda çok performanslı çalışan bir proxy server olarak hizmet verebilmektedir. Proxy Server?
Proxy Server
Reverse proxy sunucuları, dışarıdan yada içeriden gelen istenci isteklerini yakalayan ve bunları uygun durumda olan backend server üzerine ileten bir ara iletişim sunucusudur diyebiliriz. Reverse Proxy sunucusu sayesinde web trafiği dağıtılarak ilgili trafik için hız kazandırılır, güvenlik hizmetlerinde hız sağlanır vb. bir çok konu hakkında fayda elde edilebilir.
Nginx kurulumu için buraya tıklayabilirsiniz. Ardından Nginx için Proxy Server rolü nasıl sağlanır ve konfigürasyon nasıl yapılır ona bakalım.
Nginx tarafında Reverse Proxy rolü için kullanılacak argüman “Proxy_pass” argümanıdır. “Proxy_pass yönergesi, isteği yönerge ile birlikte belirtilen Proxy Sunucularına iletir. Örnek Olarak;
Nginx.conf dosyasının konfigürasyonu için burayı tıklayabilirsiniz.
Nginx.conf dosyası içerisinde;
location /{
proxy_pass http://192.168.17.25;
}
Satırı gibi kullanılabilir. Buradaki ip adresi gelen isteklerin yönlendirileceği proxy server ip adresidir. Farklı bir örnek daha;
location /admin {
proxy_pass http://192.168.17.25;
}
location /login {
proxy_pass http://192.168.17.26;
}
Bu örnekte, mesela www.inancdelibalta.com.tr/admin sayfasına gelen istekleri proxy sunucusu 192.168.17.25 ip adresine, www.inacndelibalta.com.tr/login sayfasına gelen istekleri ise 192.168.17.26 ip adresli sunucu yönlendiriyor.
Bir tane de demo yapalım ve hemen terminalimizi açalım;
- Container Oluşturma
Docker container run –d —name backend –p 8080:80 nginx |
Komutu ile backend tarafında kullanmak için bir container oluşturalım.
Docker container run –d —name proxy -p 80:80 nginx |
Komutu ile proxy olarak kullanacağımız bir container oluşturalım.
- Nginx Konfigürasyonu
- Backend Sunucu
docker container exec –it backend bash |
Komutu ile bash ortamına inelim
Ben container olarak debian kullandığım için web dizini farklı bir dizinde bulunmakta şimdi
cd /usr/share/nginx/html/ |
Nano index.html
Düzenleyeceğim. Burada size ait bir web siteniz var ise kaynak dosyaları bu dizine atabilirsiniz.
- Proxy Sunucu
docker container exec –it proxy bash
Komutu ile bash ortamına inelim
cd /etc/nginx/conf.d/ |
Yukarıdaki şekilde conf.d dizinine gidelim
nano testing.conf |
İle bir conf dosyası oluşturalım ve içine aşağıdaki şekilde location yönergesi ile gerekli proxy_pass satırını yazalım.
server { listen 80; server_name www.inanc1.info; location / { proxy_pass http://172.17.0.2;
} |
Buradaki ip adresi backend sunucusuna ait olan ip adresidir. Backend container ına ait olan ip adresini bulmak için
Docker container inspect backend |
Komutunu kullanabilirsiniz.
Şimdi burada, location / yönergesi ile proxy sunucusuna gelen tüm istekleri backend sunucusuna iletiyorum. Eğer farklı sayfaları farklı sunuculara iletmek isteseydim
location /admin
Yada
location /haberler
Vb. şekilde ayırıp ilgili sunucuların ip adreslerini yazıp yönlendirebilirdim. Neyse devam …
Browserı açıp www.inanc1.info yazdığımda
Yukarıdaki şekilde proxy sunucusu 80 portuna gelen isteği backend sunucusuna ilettiğini görüyorum. Hepsi bu kadar. Sonraki yazımızda da load balancing tarafına bakalım 🙂