Forum
Başka bir bilgisayara yönlendirme yapmak için ters proxy kurulacak makinede aynı zamanda site yayınlanıyorsa, sözde kod yapılandırması nasıl olmalıdır ?
Örneğin nginx kurulacak bir bilgisayarda www.başkabirdomain.com.tr domaini için bir site yayınlanıyorsa;
Sözde kod;
Port 443 için;
www.misalbirdomain.com.tr için yönlendir : 255.255.255.255
www.başkabirdomain.com.tr için yönlendir : localhost:XXXXX
gibi bir yapılandırma yeterli midir ?
1) Yönlendir: localhost:XXXX denilerek porta gelen istek, nginx kurulu makinada iis e mi gönderilmektedir ?
2) Sanırım porta gelen istek IIS e gitmeden önce Nginx tarafından yakalanıyor galiba, doğru mudur ?
Anladığım kadarıyla cloudflare alt yapısını çözmeye çalışıyorsunuz..
Böyle br alt yapıyı kendi bünyenizde kuracaksanız yapmanız gerekleri sıralayım.
Bir adet linux işletimi yüklü bir sunucuya ihtiyacınız olacak. Bu konuda cloudlinux işletim sistemi daha başarılıdır.
Cloudlinux işletim sistemi üzerine apache webserver kurmanız gerekiyor.
Mod_proxy apache modülünü kurmanız gerekiyor.
Bu modülü kurduktan sonra, apache virtualhost konfikasyonunu yapılandırmanız gerekiyor..
<VirtualHost *:80>
ServerName www.cozumpark.com
Serveralias cozumpark.com
CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.log
ProxyPass / http://192.168.10.1:8080/
ProxyPassReverse / http://192.168.10.1:8080/
</VirtualHost>
üsteki ornekte anlatıldığı gibi virtualhost config sayfasında cozumpark.com 80 portuna gelen istekler 192.168.10.1 ip sindeki 8080 portundaki web sunucuya gitmektedir..
Ayrıca apache üzerinde webcahce modülünüde aktif etmeniz gerekiyor. 192.168.10.1 ipden gelen istekler apache server üzerinde cache olarak tutulacak ve yayına çıkacaktır.
Bu işlemler bittikten sonra apache üzerine nginx serveri kurmanız gerekiyor.
Bu işlemde apache ile diğer web server arasında proxy kuruldu.
Ayrıca hack ataklarından da korunmak isteniyorsa proxy yapılan sunucu ile internet çıkış noktasına firewall eklenerek proxy servisi aktif edilebilir. Bu sayede siteye ulaşmak isteyen birisi doğrudan sunucuya değil firewalla bağlanıp onun üzerinden erişim yapacaktır.
Cloudflare buna benzer bir alt yapıda çalışıyor.. Kısaca anlattım..
Anladığım kadarıyla cloudflare alt yapısını çözmeye çalışıyorsunuz..
Böyle br alt yapıyı kendi bünyenizde kuracaksanız yapmanız gerekleri sıralayım.
Bir adet linux işletimi yüklü bir sunucuya ihtiyacınız olacak. Bu konuda cloudlinux işletim sistemi daha başarılıdır.
Cloudlinux işletim sistemi üzerine apache webserver kurmanız gerekiyor.
Mod_proxy apache modülünü kurmanız gerekiyor.
Bu modülü kurduktan sonra, apache virtualhost konfikasyonunu yapılandırmanız gerekiyor..
<VirtualHost *:80>
ServerName www.cozumpark.com
Serveralias cozumpark.comCustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog ${APACHE_LOG_DIR}/error.logProxyPass / http://192.168.10.1:8080/
ProxyPassReverse / http://192.168.10.1:8080/</VirtualHost>
üsteki ornekte anlatıldığı gibi virtualhost config sayfasında cozumpark.com 80 portuna gelen istekler 192.168.10.1 ip sindeki 8080 portundaki web sunucuya gitmektedir..
Ayrıca apache üzerinde webcahce modülünüde aktif etmeniz gerekiyor. 192.168.10.1 ipden gelen istekler apache server üzerinde cache olarak tutulacak ve yayına çıkacaktır.
Bu işlemler bittikten sonra apache üzerine nginx serveri kurmanız gerekiyor.
Bu işlemde apache ile diğer web server arasında proxy kuruldu.
Ayrıca hack ataklarından da korunmak isteniyorsa proxy yapılan sunucu ile internet çıkış noktasına firewall eklenerek proxy servisi aktif edilebilir. Bu sayede siteye ulaşmak isteyen birisi doğrudan sunucuya değil firewalla bağlanıp onun üzerinden erişim yapacaktır.
Cloudflare buna benzer bir alt yapıda çalışıyor.. Kısaca anlattım..
Selamlar Mert Bey;
aslında ben reverse proxy olarak çalışacak bilgisayara herhangi bir sertifika ve key tanıtmadan (nginx tarafında) gelen https bağlantıları yönlendirmek istedim.
port 443 dinlendiğinde, sertifika ve key yok ise, bu bağlantılar başka bir bilgisayara yönlendirilebilir mi ?
misal;
listen 443; (sözde kod)
www.falanfilantest.com.tr yönlendir : 111.111.111.111
www.başkadomain.com.tr yönlendir : localhost:1234
gibi birşey mümkün müdür ?
https kullanıldığında şifresiz ve şifreli yerler doğru işaretlenmiş midir ?
https://www.falanfilantest.com.tr /kategori/3455666
dolayısıyla yönlendirme yaparken, host tarafını yani www.falanfilantest.com.tr adresine göre yönlendirmek mümkün müdür ?
merhaba,
reverse proxy tarafında farklı portlar belirterek, trafiği yönlendirmeniz mümkün.
https://test.local -> webserver1 -> 443
http://test.local:5000 -> webserver1 -> 80
ngnix tarafında tecrübeniz yok ise, pfsense üzerinde squid ile reverse proxy konumlandırabilirsiniz.
referans adres fikir verecektir.
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
merhaba,
reverse proxy tarafında farklı portlar belirterek, trafiği yönlendirmeniz mümkün.
https://test.local -> webserver1 -> 443
http://test.local:5000 -> webserver1 -> 80
ngnix tarafında tecrübeniz yok ise, pfsense üzerinde squid ile reverse proxy konumlandırabilirsiniz.
referans adres fikir verecektir.
Turan Bey Selamlar,
aslında
A <-----------> B <---------------> C
A: Ulaşılmak istenen esas bilgisayar (misal static ip: 111.111.111.111)
B: Ters Proxy yapılandırmalı bilgisayar (kesinlikle IIS ya da Nginx tarafında SSL serfifikası tanımlı değil) (misal static ip: 222.222.222.222)
C: https (güvenli) bağlantısı ile ana bilgisayara ulaşmaya çalışan client
domain : www.falanfilantest.com.tr dns kaydı: 222.222.222.222
C bilgisayarı www.falanfilan.com.tr alan adını giriyor browser'a, 222.222.222.222 ip numaralı B bilgisayarına gidiyor.
B bilgisayarı IIS ya da nginx tarafında hiçbir sertifika tanımlı olmadığı halde, şifreli olan bir bağlantıyı aşağıdaki sözde kurala göre A bilgisayarına yönlendirebilir mi ?
Sözde kod kural;
listen 443; (güvenli bir bağlantı ama B bilgisayarında IIS ya da Nginx tarafında SSL tanımlı değil)
eğer www.falanfilan.com.tr ise 111.111.111.111 git
eğer www.falanbaşkafilan.com.tr ise localhost:XXXXXX git
eğer www.misaldomaintest.com.tr ise reddet
denilebilir mi ???
Bunun dışında Turan Bey, bir ölçüde bu işlemleri windows server daki netsh komutları ile yapılması mümkün müdür ?
port yönlendirmek ile birlikte (netsh komutu ile) filtreleme mümkün müdür ?
ip ye göre, (111.111.111.111 izin ver; 222.222.222.222 reddet gibi)
domaine göre, (www.falanfilantest.com.tr izin ver; www.birbaşkadomain.com.tr reddet gibi)
boyuta göre, ( istek 5 KB MAX ise izin ver gibi)
ya da süreye göre ? ( bağlantı 2 saniyeden fazla ise reddet gibi )
Aydınlattığınız için teşekkürler.
A <-----------> B <---------------> C
A: Ulaşılmak istenen esas bilgisayar (misal static ip: 111.111.111.111)
B: Ters Proxy yapılandırmalı bilgisayar (kesinlikle IIS ya da Nginx tarafında SSL serfifikası tanımlı değil) (misal static ip: 222.222.222.222)
C: https (güvenli) bağlantısı ile ana bilgisayara ulaşmaya çalışan client
domain : www.falanfilantest.com.tr dns kaydı: 222.222.222.222
C bilgisayarı www.falanfilan.com.tr alan adını giriyor browser'a, 222.222.222.222 ip numaralı B bilgisayarına gidiyor.
B bilgisayarı IIS ya da nginx tarafında hiçbir sertifika tanımlı olmadığı halde, şifreli olan bir bağlantıyı aşağıdaki sözde kurala göre A bilgisayarına yönlendirebilir mi ?
Sözde kod kural;
listen 443; (güvenli bir bağlantı ama B bilgisayarında IIS ya da Nginx tarafında SSL tanımlı değil)
eğer www.falanfilan.com.tr ise 111.111.111.111 git
eğer www.falanbaşkafilan.com.tr ise localhost:XXXXXX git
eğer www.misaldomaintest.com.tr ise reddet
denilebilir mi ???
reverse proxylerin temel amacı trafiği istediğiniz gibi yönlendirmek olduğundan, talebinizi gerçekleştirebilirsiniz.
http://www.giuseppeurso.eu/en/redirect-from-http-to-https-and-viceversa-with-apache-proxypass/
en basit hali ile yine reverse proxylerin tercih sebeplerinden biri ssl offloading'dir, sizin düşündüğünüz mimari bu avantajı elden alıyor.
kurmak istediğiniz yapı ile neyi amaçlıyorsunuz ?
reverse proxy üzerinde tanımlı adreslere cevap verecektir, doğal olarak tanımlı olmayan bir domain için cevap alamazsınız.
Bunun dışında Turan Bey, bir ölçüde bu işlemleri windows server daki netsh komutları ile yapılması mümkün müdür ?
port yönlendirmek ile birlikte (netsh komutu ile) filtreleme mümkün müdür ?
ip ye göre, (111.111.111.111 izin ver; 222.222.222.222 reddet gibi)
domaine göre, (www.falanfilantest.com.tr izin ver; www.birbaşkadomain.com.tr reddet gibi)
boyuta göre, ( istek 5 KB MAX ise izin ver gibi)
ya da süreye göre ? ( bağlantı 2 saniyeden fazla ise reddet gibi )
netsh ile block/pass mümkün, ancak yönetimi zor olacaktır.
boyut, süre vb. talepleriniz için, rate limitlerde size sunulanları kullanabilirsiniz, araştırmalısınız.
yapınız uygun ise, ngnix, haproxy veya varnish'i incelemenizi öneririm.
inceleme ve karşılaştırma için referans adresler fazlası ile fikir verecektir.
https://www.scalescale.com/nginx-haproxy-varnish-comparison/
https://www.haproxy.com/blog/haproxy-and-varnish-comparison/
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
A <-----------> B <---------------> C
A: Ulaşılmak istenen esas bilgisayar (misal static ip: 111.111.111.111)
B: Ters Proxy yapılandırmalı bilgisayar (kesinlikle IIS ya da Nginx tarafında SSL serfifikası tanımlı değil) (misal static ip: 222.222.222.222)
C: https (güvenli) bağlantısı ile ana bilgisayara ulaşmaya çalışan client
domain : www.falanfilantest.com.tr dns kaydı: 222.222.222.222
C bilgisayarı www.falanfilan.com.tr alan adını giriyor browser'a, 222.222.222.222 ip numaralı B bilgisayarına gidiyor.
B bilgisayarı IIS ya da nginx tarafında hiçbir sertifika tanımlı olmadığı halde, şifreli olan bir bağlantıyı aşağıdaki sözde kurala göre A bilgisayarına yönlendirebilir mi ?
Sözde kod kural;
listen 443; (güvenli bir bağlantı ama B bilgisayarında IIS ya da Nginx tarafında SSL tanımlı değil)
eğer www.falanfilan.com.tr ise 111.111.111.111 git
eğer www.falanbaşkafilan.com.tr ise localhost:XXXXXX git
eğer www.misaldomaintest.com.tr ise reddet
denilebilir mi ???
reverse proxylerin temel amacı trafiği istediğiniz gibi yönlendirmek olduğundan, talebinizi gerçekleştirebilirsiniz.
http://www.giuseppeurso.eu/en/redirect-from-http-to-https-and-viceversa-with-apache-proxypass/
en basit hali ile yine reverse proxylerin tercih sebeplerinden biri ssl offloading'dir, sizin düşündüğünüz mimari bu avantajı elden alıyor.
kurmak istediğiniz yapı ile neyi amaçlıyorsunuz ?
reverse proxy üzerinde tanımlı adreslere cevap verecektir, doğal olarak tanımlı olmayan bir domain için cevap alamazsınız.
Bunun dışında Turan Bey, bir ölçüde bu işlemleri windows server daki netsh komutları ile yapılması mümkün müdür ?
port yönlendirmek ile birlikte (netsh komutu ile) filtreleme mümkün müdür ?
ip ye göre, (111.111.111.111 izin ver; 222.222.222.222 reddet gibi)
domaine göre, (www.falanfilantest.com.tr izin ver; www.birbaşkadomain.com.tr reddet gibi)
boyuta göre, ( istek 5 KB MAX ise izin ver gibi)
ya da süreye göre ? ( bağlantı 2 saniyeden fazla ise reddet gibi )
netsh ile block/pass mümkün, ancak yönetimi zor olacaktır.
boyut, süre vb. talepleriniz için, rate limitlerde size sunulanları kullanabilirsiniz, araştırmalısınız.
yapınız uygun ise, ngnix, haproxy veya varnish'i incelemenizi öneririm.
inceleme ve karşılaştırma için referans adresler fazlası ile fikir verecektir.
https://www.scalescale.com/nginx-haproxy-varnish-comparison/
https://www.haproxy.com/blog/haproxy-and-varnish-comparison/
Merhabalar Turan Bey;
Aslında en nihayeti bir tcp yazılımı geliştirmek gerekcek sanırım.
Aslında forumda hosting konusunda bir önceki sorumda bahsettiğim üzere sadece gelen client talebini karşılayacak filtre bilgisayara ihtiyacım var.
Port yönlendirme yapacağım ve client den gelen talepleri önce bu yönlendirme görevini üstelenecek bilgisayar karşılayacak ve ip filtreleme yapacak.
İhtiyaç bundan ibaret ama asıl sorun, buna en uygun port yönlendirme olmasına rağmen client ip sini port yönlendirirken tcp header ında belirtmek gerekecek.
www.citrix.com/blogs/2016/04/25/how-to-enable-client-ip-in-tcpip-option-of-netscaler/ makalesinde bir yöntem anlatıyorlar.
Port yönlendirmede yönlendirilen verinin gönderici client ın ipsini tcp paketine nasıl eklenebilir, bu konuda bir öneri verebilir misiniz ?
Çünkü talebi alacak sunucu port yönlendiren bilgisayarın ip numarasını client ip olarak addetmekte.
Teşekkürler.
nlb üreticilerinin farklı çözümleri mevcut, netscaler'ın çözümüde alternatif.
Mehmet hocanın konu hakkında referans alınabilecek detaylı bir yazısı mevcut, f5 örneğide talebinizi karşılar diye düşünüyorum.
https://www.mehmetince.net/yuk-dengeleyiciler-ve-gercek-ip-adresi-karmasasi/
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
nlb üreticilerinin farklı çözümleri mevcut, netscaler'ın çözümüde alternatif.
Mehmet hocanın konu hakkında referans alınabilecek detaylı bir yazısı mevcut, f5 örneğide talebinizi karşılar diye düşünüyorum.
https://www.mehmetince.net/yuk-dengeleyiciler-ve-gercek-ip-adresi-karmasasi/
Makaledeki bu örnek SSL yüklü -http X-Forwarded-For- etiketine erişebilen load balancerlar için geçerli.
Yine de vakit ayırdığınız için teşekkür ederim.
yazıda belirtilen f5 komutu için ssl zorunluluğu bulunmuyor, http requestler için kullanabilir.
ngnix tarafında benzer bir yapı için referans adresi inceleyebilirsiniz.
https://easyengine.io/tutorials/nginx/forwarding-visitors-real-ip/
****************************************************************
Probleminiz Çözüldüğünde Sonucu Burada Paylaşırsanız.
Sizde Aynı Problemi Yaşayanlar İçin Yardım Etmiş Olursunuz.
Eğer sorununuz çözüldü ise lütfen "çözüldü" olarak işaretlerseniz diğer üyeler için çok büyük kolaylık sağlayacaktır.
*****************************************************************
yazıda belirtilen f5 komutu için ssl zorunluluğu bulunmuyor, http requestler için kullanabilir.
ngnix tarafında benzer bir yapı için referans adresi inceleyebilirsiniz.
https://easyengine.io/tutorials/nginx/forwarding-visitors-real-ip/
Merhabalar Turan Bey,
benim bildiğim kadarıyla
domain host dışında bir http request içerisinde yer alan -tabii güvenli bir https bağlantısından bahsediyorum-
Kırmızı : şifreli
Yeşil : şifresiz
olmak üzere;
www.örnekbirdomain.com.tr/parametreler/IDler
hostname: www.örnekbirdomain.com.tr
get parametre: /parametreler/IDler
post parametre: XXX
x-forwarded-for: XXX.XXX.XXX.XXX
şeklinde. Bilmiyorum, hatalı mı biliyorum ?
Bildiğim kadarıyla x-forwarded-for etiketi değerleri de https ile şifreleniyor. Yani bu etikete değer eklemek için nginix ya da diğer programlar vasıtasıyla SSL sertifika tanımlamasına ihtiyaç duyuluyor diye söylemişlerdi.
x-forwarded-for: XXX.XXX.XXX.XXX değeri şifresiz midir ?