2016-10-29 30 views
5

Moja konfiguracja to cloudflare -> nginx -> serwer node.js. Potwierdziłem, że nie jest to serwer node.js. Problem wydaje się być połączeniem cloudflare i nginx. Działa dobrze z tylko nginx i node.js.Websockets rozłączają się z nginxem i cloudflare

Oto, co dzienniki nginx dla połączenia z internetem: 162.158.75.125 - - [29/Oct/2016: 00: 01: 47 +0000] "GET/HTTP/1.1" 101 1047 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537,36 (KHTML, like Gecko) Chrome/Safari/537,36" 53.0.2785.143

nginx config:

server { 
    listen 443 ssl; 
    server_name vectorwar.io; 
    ssl_certificate /etc/nginx/ssl/cert.pem; 
    ssl_certificate_key /etc/nginx/ssl/key.pem; 

    location/{ 
     proxy_pass  http://localhost:7000; 
     proxy_set_header Host  $host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
     proxy_read_timeout 31104000s; 
     proxy_connect_timeout 31104000s; 
     proxy_send_timeout 31104000s; 

    } 
} 
+0

[Czy mogę korzystać z WebSockets z CloudFare] (https://support.cloudflare.com/hc/en-us/articles/200169466-Can-I-use-CloudFlare-with-WebSockets-)? – jfriend00

+0

To nie rozwiązuje mojego problemu. – user1781498

+0

Być może gdzieś w rurze? Jak długo jest on otwarty, gdy websocket milczy? Czy wysyłanie wiadomości w stylu ping/ponga w dół połączenia WS okresowo uniemożliwia jej rozłączenie? – Brian

Odpowiedz

2

Czy próbowałeś konfigurowania websocket bez SSL?

Mam doświadczenia związane z tym, że Websockets wykonane przez SSL automatycznie rozłączają się po ~ 45 sekundach. Użycie niezabezpieczonego połączenia to naprawiło. Oczywiście nie idealnie, ale możesz spróbować sprawdzić, czy to przynajmniej rozwiązuje problemy z rozłączeniem.

+0

Nie próbowałem tego. – user1781498

+0

Wygląda na to, że mogę wysłać pakiet co kilka sekund, a to powstrzymuje go przed przekroczeniem limitu czasu. – user1781498