22 Kasım 2017 Çarşamba

NodeJS Portsuz Çalışma(Reverse Proxy)

Merhabalar arkadaşlar,
Bu yazımda NodeJS geliştirirken karşılaşılan önemli bir sorunun çözümünden bahsetmek istiyorum.

Bildiğiniz üzere NodeJS çalıştırırken bir port belirtiyoruz ve sistem o portu dinleyip gelen istekleri uygulamamıza aktarıyor. Örnek olarak veyselsahin.com.tr domaini altında çalıştırdığım bir node app için 3000 portunu belirtiyorum ve veyselsahin.com.tr:3000 şeklinde çalışıyor sistem. Buraya kadar bir sorun yok. Fakat eğer kullanıcılarımız birçok portu kapalı olan bir ağdan ulaşmaya çalışıyorlar ve o kapalı portlardan biri sizin uygulamanızın portuysa kullanıcınız bağlantıda sorun yaşayacak buna ek olarak facebook platformlarında da url verirken sonu / ile bitmesi gerekiyor urllerin ve bazen portunuzdan kaynaklı olarak o urlyi veremiyorsunuz.

İşte redbird tüm bu sorunları reverse proxy yöntemiyle bizler işin hallediyor ve uygulamamızda port yerine bir path görünüyor.

Lafı çok uzatmadan redbirdin kurulumu için gerekli npm komutunu aşağıya koydum.

npm install redbird

Eğer bu paketi ben sunucumda başka uygulamalarda da kullanacağım her defasında kurmak istemiyorum derseniz şeklinde kurulum yapmanızı tavsiye ederim.

npm install -g redbird

Kurulum başarılı bir şekilde tamamlandıysa hemen aşağıya örnek bir kullanım koydum. SSL dosyalarınızın yerini de belirterek rahatlıkla ssl de aktif edebilirsiniz.

var proxy = require('redbird')({
    port: 80,    hostname: hostName,    ssl: {
        http2: false,        port: 443,        key: '/etc/letsencrypt/live/messengerchatbot.bytaptap.com/privkey.pem',        cert: '/etc/letsencrypt/live/messengerchatbot.bytaptap.com/cert.pem',        ca: '/etc/letsencrypt/live/messengerchatbot.bytaptap.com/fullchain.pem'    }
});


proxy.register("https://" + hostName + "/chatboot", "http://" + hostName + ":3000", {
    port: 80,    hostname: hostName,    ssl: {
        http2: false,        port: 443,        key: '/etc/letsencrypt/live/messengerchatbot.bytaptap.com/privkey.pem',        cert: '/etc/letsencrypt/live/messengerchatbot.bytaptap.com/cert.pem',        ca: '/etc/letsencrypt/live/messengerchatbot.bytaptap.com/fullchain.pem'    }
});
Redbird ile ilgili detaylı bilgi ve kullanımlar için bu adrese gidebilirsiniz.

Mutlu günler.


Share: