WSS, WebSocket protokolünün TLS ile şifrelenmiş halidir; tarayıcıda wss:// şemasıyla açılır ve HTTPS sayfalardan yapılan bağlantılar için zorunludur. HTTPS bir sayfadan şifresiz ws:// bağlantısı açmaya çalışmak tarayıcıda "Mixed Content" hatasıyla engellenir.
WSS nasıl çalışır?
İstemci önce normal bir TLS el sıkışması yapar, ardından HTTP/1.1 üzerinden Upgrade: websocket başlığıyla protokol yükseltmesi ister. Sertifika, alan adınız için 443 portunda zaten kurulu olan sertifikadır; WSS için ayrı bir sertifika türü gerekmez.
Nginx ile ters proxy
Uygulamanız örneğin 3000 portunda çalışıyorsa TLS'i Nginx sonlandırır ve trafiği yönlendirir:
location /ws/ {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 120s;
}
proxy_read_timeout varsayılan olarak 60 saniyedir; sessiz bağlantılar bu süre sonunda kesilir. Uygulama tarafında periyodik ping/pong göndermek en sağlıklı çözümdür.
Apache ile
mod_proxy, mod_proxy_wstunnel ve mod_ssl etkinken şu satırlar yeterlidir:
ProxyPass "/ws/" "ws://127.0.0.1:3000/ws/"
ProxyPassReverse "/ws/" "ws://127.0.0.1:3000/ws/"
Sık görülen hatalar
- Mixed Content: Kodda
ws://yerinewss://kullanın. - 400 veya 426 yanıtı: Upgrade ve Connection başlıkları proxy tarafından iletilmiyordur.
- Bağlantı düzenli aralıklarla kopuyor: Proxy veya yük dengeleyici boşta kalma süresini kontrol edin.
- Sertifika hatası: Zincirin eksiksiz olduğunu SSL kontrol aracıyla doğrulayın.
Doğrulama
Tarayıcı geliştirici araçlarında Network > WS sekmesinde durum kodu 101 olmalıdır. Komut satırında wscat -c wss://example.com/ws/ ile de deneyebilirsiniz.
Ölçeklenirken dikkat
Birden çok uygulama sunucusu arkasında çalışıyorsanız WebSocket bağlantıları uzun ömürlü olduğundan yük dengeleyicide oturum sabitliği (sticky session) gerekebilir. Dağıtım sırasında sunucu yeniden başlatıldığında istemcilerin otomatik yeniden bağlanma mantığı bulunmalıdır; üstel geri çekilme (exponential backoff) ile bağlantı fırtınasını önleyin. Ayrıca kimlik doğrulama bilgilerini URL'de taşımak yerine ilk mesajda veya çerezle iletmek, günlüklere sızmayı azaltır.
Özetle WSS için ek bir sertifika değil, doğru proxy başlıkları ve zaman aşımı ayarları gerekir. Sertifika seçimi için SSL sertifikaları sayfasına bakabilirsiniz.