Node.js + nginx proxy pass kullanımı

Örneğin oluşturmuş olduğunuz bir node.js uygulaması 3000 portunda çalışıyorsa siz localhost:3000 ile girmek yerine örneğin deneme.domain.com ile ulaşmak istiyorsanız, nginx için aşağıdaki ayarları giriyoruz:

deneme.emretekince.com adresine gelen her 80 portu için bir sanal server oluşturduk ve gelen istekleri proxy pass yolu ile 3000 portuna yönlendirdik.

proxy_pass karşısına uygulamanın çalıştığı sunucuyu ve port numarasını belirtiyoruz.

Socket IO ve Express ile ortak session kullanımı

Uzun bir aradan sonra tekrar merhaba, bu kez size ne Java ne de PHP’den bir örnek göstereceğim :) Yeni favorim Node.js!

Şimdi size Socket IO ve Express session’ı nasıl birbirine entegre edip Redis serverda saklayacağımızı anlatacağım.

Başlıca gerekli modüller:
session.socket.io: https://github.com/wcamarao/session.socket.io
connect-redis: https://github.com/tj/connect-redis
express-session: https://github.com/expressjs/session
socket.io : http://socket.io/

Öncelikle modüllerimizi aşağıdaki gibi ayarlıyoruz:

Burada önemli olan noktalar şunlar:

Kısmında serverımıza kurmuş olduğumuz Redis serverının adresini ve port numarasını tanımlıyoruz ve diyoruz ki Session Store olarak Redis’i kullan.

Çeşitli başka yazılımlar da var bunun için örneğin mongostore gibi ama Redis aralarında en hızlısı. Özellikle anlık değişen değişken değerleri için Redis’de saklamanız daha uygundur. Ancak kalıcı bilgiler ör: email, ad, soyad gibi değerleri MongoDB’de tutmanız daha yararlı olacaktır.

kısmındaki mysecret ifadesi sessionumuzu şifreleyen keydir. bunu daha sonra tekrar kullanacağız dilerseniz başta bir değişkene atıp oradan da çağırabilirsiniz pratiklik açısından.Ayrıca son satırdaki emrejs ismi bizim session ismimiz olacak, bunu da daha sonra kullanacağız.

Daha sonra aşağıdaki bölümü kodumuza ekliyoruz.

secret: daha önce kullanmış olduğumuz gizli anahtarımız ile aynı key olmalı.
store: sessionların nerede saklanacağını belirtiyoruz.
key: daha önce de kullandığımız gibi session ismimiz.
cookie.maxAge: oturum süresinin 1 saat olduğunu belirttik.

Gelelim can alıcı noktaya:

req.session.username ile sessionumuza username adında bir değer açtık ve içine gelen parametreyi kaydettik.

Şimdi socket bağlantımızdan bu sessiona nasıl erişeceğiz?

Gördüğünüz gibi klasik socketio syntaxı yerine yukarıdaki syntaxı kullandık ve 3. parametre olan session ile buna erişebildik.