Belirli Bir Url e Gelen İsteklerin Farklı Bir Sunucudaki Uygulama Tarafından Karşılanması

Share Button

Bazı durumlarda, alan adınız altında servis ettiğiniz belirli bir yola gelen isteklerin, güvenlik veya çeşitli farklı nedenlerle, farklı lokasyon/sunucuda çalıştırılan bir uygulamaya yönlendirilmesini; ancak bu işlemin url değişmeksizin gerçekleşmesini isteyebilirsiniz.

Şayet Microsoft teknolojileri kullanan bir platform üstünde çalışıyor ve NetScaler gibi bir cihazınız yoksa aşağıdaki işlem basamaklarını gerçekleştirerek bu işlemi IIS üzerinde kolayca gerçekleştirebilirsiniz.

* Aşağıdaki sayfayı ziyaret ederek Application Request Routing eklentisini IIS makinenizin üzerine kurun.
Application Request Routing

* Komut İstemi (Command Prompt) uygulamasını açarak aşağıdaki komutu çalıştırın. Bu işlem, isteği karşılayan IIS makinesindeki headerların, isteğin yönlendirileceği sunucu sistemine transfer edilebilmesi için gereklidir.

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy -preserveHostHeader:true /commit:apphost

Alan adımızın ibrahimgunduz.net olduğunu ve http://www.ibrahimgunduz.net/ornek url ine gelen istekleri mysampleapp-13241324-aws.amazon.com/ gibi bir url e yönlendireceğimizi varsayalım.

* IIS yönetim penceresinin sol tarafındaki ağaçtan ilgili site tanımlamasını seçin.
* Sağ taraftaki listeden URL ReWrite seçeneğine çift tıklayın.
* Yeni açılan ekranın en sağ tarafındaki Actions menüsünden Manage Server Varialbes bölümündeki View Server Variables… seçeneğine tıklayın.
* Yeni açılan penceredeki Actions bölümünden Add… seçeneğine tıklayın.
* Karşınıza gelen dialogdaki Server Variable Name isimli alana HTTP_HOST yazın ve OK butonuna tıklayın. Siz değişken ismini yazmaya çalıştığınız sırada, dialog sizin yazmaya çalıştığınız değişken ismini otomatik olarak tamamlamaya çalışacaktır.
* İşlemi tamamladığınızda yine Actions menüsünden Back to Rules seçeneğine tıklayın.
* Yeni url kuralını oluşturmak üzere Actions menüsünden Add Rule… seçeneğine tıklayın.
* Yeni açılan pencereden Inbound and Outbound Rules grubundan Reverse Proxy seçeneğini seçin ve OK butonuna tıklayın.
* Yeni açılan dialogdaki Enter the server name or IP address where HTTP requests will be forwarded alanına, ilgili url e istek gelmesi durumunda, sunucunun yönlendirileceği adresi girin.
* Eğer SSL yönetimi IIS sunucunuz tarafından gerçekleştirilmiyorsa veya SSL kullanmıyorsanız, Enable SSL offloading seçeneğinin işaretini kaldırın.
* OK butonuna basarak pencereyi kapatın.
* Bir sonraki pencerede inbound rules listesinden oluşturduğunuz kuralı (listenin en sonundaki kural) bularak çift tıklayın.
* Pattern bölümüne başına slash işareti gelmeyecek şekilde yönlendirilecek url ile ilgili regex deseninizi tanımlayın. Mevcut örnek için ^ornek/?(.*) diyebiliriz.
* Server Variable bölümündeki listenin yanında yeralan Add butonuna tıklayın ve yeni açılan penceredeki server variable name alanına HTTP_HOST, Value alanına {HTTP_HOST} değerini girin ve OK butonuna basın.
* Action grubundaki Action Type bölümünün Rewrite olarak seçili olduğundan emin olun.
* Yine aynı gruptaki Rewrite Url alanında mevcut örneğe göre {C:1}://mysampleapp-13241324-aws.amazon.com/{R:0}
* Pencerenin sağ tarafında yeralan Actions menüsünden Apply seçeneğine tıklayarak yönlendirme işlemini aktif hale getirin.

Tüm bu işlemleri gerçekleştirdiğinizde, isteği karşılayan url e gelen tüm istekler, belirttiğiniz sunucuya yönlendirilir ve HTTP_HOST gibi isteğin geldiği sunucuyu belirleyen değişkenler isteğiniz doğrultusunda tamamen karşı sunucuya aktarılır.

Share Button

About İbrahim Gündüz

1983 yılında İstanbul’da doğdu. İlkokul yıllarında cobol ve basic le olan tanışması, yazılıma olan ilgisini arttırdı 2005 yılında. Uludağ Üniversitesi Teknik Bilimler Meslek Yüksek Okulu Elektronik bölümünden mezun olan Gündüz, çeşitli alanlarda faaliyet gösteren kurumlarda yazılım geliştirici olarak görev almıştır. Mesleki ilgi alanları, ölçeklenebilir sistemler, uygulama entegrasyonları ve ödeme sistemleridir. Halen Markafoni back end geliştirici olarak çalışmaktadır.

Bir Cevap Yazın

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