Reverse Proxy Nedir?

Reverse Proxy sunucusu, bilgisayar ağlarında bir veya daha fazla sunucudan istemci adına kaynakları alan bir vekil sunucu türüdür. Kaynakları daha sonra istemciye geri döndürür. İleri proxy, istemcilere yakın bir yerde çalışan Web sunucularla istemciler arasında aracı olan bir vekil sunucusudur.
Proxy, genellikle yükü birkaç sunucu arasında dağıtmak, farklı web sitelerinden içeriği sorunsuz bir şekilde göstermek veya HTTP dışındaki protokoller üzerinden uygulama sunucularına işleme isteklerini iletmek için kullanılır.
NGINX bir isteği proxy'lediğinde, isteği belirtilen bir proxy sunucusuna gönderir, yanıtı alır ve istemciye geri gönderir. Belirli bir protokolü kullanarak bir HTTP sunucusuna (başka bir NGINX sunucusu veya başka bir sunucu) veya HTTP olmayan bir sunucuya (PHP veya Python gibi belirli bir çerçeve ile geliştirilmiş bir uygulamayı çalıştırabilen) istekleri proxy yapmak mümkündür. Desteklenen protokoller arasında FastCGI , uwsgi , SCGI ve memcached bulunur .
Reverse Proxy Kullanımı
- Ters proxyler sunucularda varlığını ve özelliğini gizleyebilir.
- Uygulama güvenlik duvarı özellikleri Web tabanlı saldırılara karşı koruyabilir.
- Güvenli Web siteleri, SSL şifrelemesi Web sunucusu tarafından yürütülmez ters proxy sunucusuna devredilebilir.
- Ters proxyler Web sunucuları üzerinden yükü azaltarak, Web isteklerine hızlı bir şekilde cevap verebilir.
- Ters proxyler gelen trafiği yük dengeleme amaçlı Web uygulama sunucularına dağıtmak için de kullanılabilir.
Bu makalede, bir proxy sunucusunun temel yapılandırması anlatılmaktadır. Farklı protokoller üzerinden NGINX'ten proxy sunucularına bir isteği nasıl ileteceğinizi, proxy sunucusuna gönderilen istemci istek başlıklarını nasıl değiştireceğinizi ve proxy sunucularından gelen yanıtların arabelleğe alınmasını yapılandırmayı öğreneceksiniz. Bu makale nginx sunucusunun kurulu olduğunu varsaymaktadır.
External Reverse Proxy Yapılandırılması
Ters proxy ile yararlı bir şey yapmak için IP adreslerini kullanmayı bırakmanız ve DNS adlarını kullanmaya başlamanız gerekir. Bu, DNS adlarınızı bir yerde bildirmeniz gerektiği anlamına gelir. DNS sunucunuz da veya DNS hizmeti aldığınız yerde, bağlantı noktası yönlendirme ile genel IP adresinizi gösteriniz.
example.com — external IP
example1.com — external IP
example3.com — external IP
İlk olarak DNS A kayıt eklemesi gerçekleştiriyorum.


DNS checker ile DNS yayılımını kontrol edebilir ve birçok ülkede bulunan DNS sunucularından herhangi bir etki alanının bilgilerini görmek için hızlı ve kolay bir şekilde bir DNS araması yapabilirsiniz. Alan adınızı ekledikten sonra, çözümleme işlemi biraz zaman alabilir.
Nginx Proxy Manager'da Hosts kısmından Proxy Hosts kısmına gidelim.

Açılan pencerede Add Proxy Host butonun basın ve aşağıdakileri ayarlayın.
- Dns sunucunuz da ekli olan alan adını ekleyiniz. | example.com
- Forward edilecek makinanın bilgilerini girin. Scheme | http veya https, IP adresi | 192.168.1.40, Port | 3000
- Block common exploits açabilirsiniz. | Yaygın istismarları engeller.
Eğer herhangi bir SSL sertifika doğrulama işlemi yapmayacaksanız, Save butonuna basarak kayıt edin.

Her şey doğru yapıldı ise artık dışarıdan erişebilmeniz gerekir. Basit bir şekilde test etmek için telefonunuzda http://example.com adresine gidip kontrol edebilirsiniz.
Status kısmından eklediğiniz kaynağı kapatabilir, düzenleyebilir ve silebilirsiniz. Şimdi SSL sertifika işlemi gerçekleştirmek için Edit butonuna basalım.

Açılan pencerede SSL kısmına gelelim.
SSL yapılandırmadan önce Let's Encrypt veya Custom bir sertifika eklemeniz gerekmektedir.
- Açılan pencerede SSL Certificate kısmından eklediğiniz SSL sertifikayı seçiniz.
- Force SSL seçeneği ile http isteklerini redirect ederek https adresine otomatik yönlendirebilirsiniz.
- Save butonuna basarak işlemi tamamlıyorum.

Lan ve Wan üzerinden kullanılan reverse proxy sunucuları farklı olması ve Wan tarafındaki reverse proxy sunucusunuz DMZ zone üzerinde olmasına dikkat ediniz.
Internal Reverse Proxy Yapılandırılması
Ters proxy ile yararlı bir şey yapmak için IP adreslerini kullanmayı bırakmanız ve DNS adlarını kullanmaya başlamanız gerekir. Bu, DNS adlarınızı bir yerde bildirmeniz gerektiği anlamına gelir. İçerideki DNS sunucunuz üzerinde yönlendireceğiniz alan adlarını reverse proxy IP adresinizi göstermeniz yeterlidir.
example.com — reverse-proxy-ip-addr
example1.com — reverse-proxy-ip-addr
example2.com — reverse-proxy-ip-addr
İlk olarak DNS A kayıt eklemesi gerçekleştiriyorum.

DNS sunucunun, adresinin çözdüğünü doğrulayın.
ping example.com

Nginx Proxy Manager'da Hosts kısmından Proxy Hosts kısmına gidelim.

Açılan pencerede Add Proxy Host butonun basın ve aşağıdakileri ayarlayın.
- Dns sunucunuz da ekli olan alan adını ekleyiniz. | example.com
- Forward edilecek makinanın bilgilerini girin. Scheme | http veya https, IP adresi | 192.168.1.40, Port | 3000
- Block common exploits açabilirsiniz. | Yaygın istismarları engeller.
Eğer herhangi bir SSL sertifika doğrulama işlemi yapmayacaksanız, Save butonuna basarak kayıt edin.

Her şey doğru yapıldı ise artık LAN üzerinden erişebilmeniz gerekir.
Status kısmından eklediğiniz kaynağı kapatabilir, düzenleyebilir ve silebilirsiniz. Şimdi SSL sertifika işlemi gerçekleştirmek için Edit butonuna basalım.

Açılan pencerede SSL kısmına gelelim.
SSL yapılandırmadan önce Let's Encrypt veya Custom bir sertifika eklemeniz gerekmektedir.
- Açılan pencerede SSL Certificate kısmından eklediğiniz SSL sertifikayı seçiniz.
- Force SSL seçeneği ile http isteklerini redirect ederek https adresine otomatik yönlendirebilirsiniz.
- Save butonuna basarak işlemi tamamlıyorum.

Lan ve Wan üzerinden kullanılan reverse proxy sunucuları farklı olması ve Wan tarafındaki reverse proxy sunucusunuz DMZ zone üzerinde olmasına dikkat ediniz.