Ngrok Nedir? Ngrok Ile Localde Çalışan Bir Uygulamanın Dışarıya Açılması
Herkese Merhaba,
Bu yazıda ngrok yazılımının ne olduğundan bahsederek, localde çalışan bir uygulamamızı dışarıya nasıl açabileceğimizi göreceğiz. İlk olarak ngrok un ne olduğundan bahsedelim.
Ngrok Nedir?
Ngrok, kendi bilgisayarımızda localhost üzerinde çalıştırdığımız uygulamalarımızı cloud üzerinden xxx.ngrok.io sub-domain i altında dışarıya açmamıza olanak sağlayan bir yazılımdır.
Örnek vererek bu durumu daha iyi anlamaya çalışalım.
localhost:8080
üzerinde çalışan bir uygulamamız olduğunu varsayalım, ngrok kullanarak bu uygulamamıza başka herhangi bir makineden (ve konumdan — aynı ağa bağlanma zorunluğu olmadan), herhangi bir ağ kısıtlamasına takılmadan (firewall vb.) https://3892d8dd9002.ngrok.io/ gibi bir url aracılığıyla ulaşarak ilgili test işlemlerimizi gerçekleştirebiliriz.
ngrok, private bir “connection tunnel” oluşturarak ilgili iletişimi makineler arasında güvenilir bir şekilde sağlamamıza olanak sağlıyor.
ngrok yazılımı HTTP Tunnelling adı verilen bir teknik kullanarak bu işlemi yerine getirmektedir.
HTTP Tunnelling Nedir?
HTTP Tunnelling, iki bilgisayar arasında belirli kısıtlamalara göre ağ bağlantısı kurabilmemize olanak sağlayan bir tekniktir. Diğer bir deyişle, Firewall, Proxy vb. ağ kısıtlamaları devrede olmadan direkt iki makine arasında ağ bağlantısı kurmamıza olanak tanıyor.
Bu teknik genellikle HTTP Connect methodu ile birlikte uygulanıyor. HTTP Connect methodu ile bir istek ilgili reverse proxy’ye iletilerek istediğimiz konumdaki makineye bağlanma isteği gönderiliyor, eğer bu isteğe onay verilirse daha sonra TCP stream’leri üzerinden ağ bağlantısı kurularak, veri aktarımı sağlanıyor.
Kısaca HTTP Tunnelling tekniğinin ne olduğunundan ve ngrok yazılımından bahsettikten sonra artık basit bir örnek ile ngrok’u nasıl kullanabileceğimize bakabiliriz.
Ngrok Ile Localde Çalışan Bir Uygulamanın Dışarıya Açılması
İlk olarak basit bir .net-core uygulaması oluşturalım ve bu uygulamayı localde çalıştıralım. Uygulamayı oluşturmak ve çalıştırmak için aşağıdaki CLI komutlarını kullanabilirsiniz.
- Uygulamayı oluşturmak için (webapi uygulaması):
dotnet new webapi --name NgrokDemo
- Uygulamayı çalıştırmak için:
cd NgrokDemo && dotnet run
Uygulamamız şuan https://localhost:7051 adresinde ayakta ve /WeatherForecast endpoint’ine istekte bulunarak basit bir liste cevabını görebiliriz.
Uygulamamızı oluşturup, ayağa kaldırdığımıza göre artık ngrok tarafındaki gerekli yapılandırmaları yapabilir ve uygulamamıza ngrok.io subdomain’i üzerinden ulaşabiliriz.
Ngrok ile ilgili yapılandırmalar için aşağıdaki sırada işlemleri gerçekleştirebiliriz:
1-) Ngrok’un Kurulması:
Ben ilgili kurulumu Windows üzerinden Chocolatey kullanarak komut satırı üzerinden gerçekleştireceğim. Diğer işletim sistemleri için kurulumlara buradan ulaşabilirsiniz.
choco install ngrok
Bu komut ile birlikte ngrok’un bilgisayarımıza kurulmuş olması gerekiyor. Kontrol etmek için ngrok -v
komutunu çalıştırabiliriz.
2-) Ngrok.com Adresi Üzerinden Kayıt Olunması:
Ngrok’u tanımlarken “private connection tunnel” oluşturduğundan bahsetmiştim, bu durumu sağlamak için ngrok.com sitesi üzerinden kayıt olmamız ve dashboard üzerinden bir access-token almamız gerekiyor. Bu access-token i uygulamamız için private HTTP Tunnel açmak için kullanacağız.
https://dashboard.ngrok.com/signup adresinden kayıt olalım ve daha sonra https://dashboard.ngrok.com/get-started/your-authtoken adresine giderek access-token ı öğrenelim.
İlgili access-token’ı elde ettikten sonra,
ngrok config add-authtoken ACCESS_TOKEN
komutu ile birlikte access-token’ımızı “AppData/Local/ngrok/ngrok.yml” adresindeki yapılandırma dosyasına kaydetmiş oluyoruz.
Artık, uygulamamızı dışarıya açabiliriz. Bunun için aşağıdaki komutu çalıştırmamız yeterli:
ngrok http https://localhost:7051/
Burada önemli bir noktadan bahsetmek istiyorum. Eğer uygulamanız https üzerinde çalışıyorsa, benim yukarıdaki komutta belirttiğim gibi tam adres vermeniz gerekiyor. Eğer http üzerinde çalışıyor ise sadece port belirtebilirsiniz. (
ngrok http 7051
gibi)
Bu komut çalıştırdıktan sonra, aşağıdakine benzer bir çıktı elde etmeniz gerekiyor.
Burada, forwarding kısmında görmüş olduğunuz URL ile birlikte artık, istediğimiz bir konumdan çalışmakta olan uygulamamıza erişim sağlayabiliriz.
Yukarıdaki ekran görüntüsünden de görebileceğimiz gibi artık bu adrese, ilgili uygulama benim localimde çalıştığı süre boyunca istek yollayarak gerekli test işlemlerini gerçekleştirebiliriz.
Okuduğunuz için teşekkürler, bir dahaki yazıda görüşmek dileğiyle.