2016-04-09 43 views
2

Bu saçma sorun, bir websocket (Mosquitto MQTT hizmeti) vekilini tersine çevirmek için nginx'i ayarlama. aşağıdaki yapılandırma ws için mükemmel çalışıyor: // ama wss başarısız: //nginx reverse proxying wss - istemci, istemci istek satırını okurken geçersiz yöntem gönderdi

events { 
    worker_connections 768; 
} 

http { 
    sendfile on; 
    tcp_nopush on; 
    tcp_nodelay on; 
    keepalive_timeout 65; 
    types_hash_max_size 2048; 

    include /etc/nginx/mime.types; 
    default_type application/octet-stream; 

    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log info; 

    gzip on; 
    gzip_vary on; 
    gzip_proxied any; 
    gzip_comp_level 6; 
    gzip_buffers 16 8k; 
    gzip_http_version 1.1; 
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; 

    server { 
     listen 80; 
     listen 443 ssl; 

     # nginx is smart enough to ignore these when serving HTTP instead of HTTPS 
     ssl_certificate /etc/nginx/cert; 
     ssl_certificate_key /etc/nginx/key; 

     location /ws { 
      # access_log off; 

      rewrite ^/ws$/break; 
      rewrite ^/ws(.*)$ $1 break; 

      proxy_pass http://mqtt:9001; 
      proxy_redirect default; 
      proxy_set_header Host $host; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header X-Forwarded-Proto https; 

      proxy_http_version 1.1; 
      proxy_set_header Upgrade $http_upgrade; 
      proxy_set_header Connection "Upgrade"; 
      proxy_read_timeout 86400; 
     } 

    } 

    client_max_body_size 1M; 
    client_body_buffer_size 1M; 
} 

Burada nginx günlüklerine bakın şudur:

10.142.0.4 - - [09/Nisan/2016: 19: 15: 16 +0000] "\ x16 \ x03 \ x01 \ x012 \ x01 \ x00 \ x01. \ X03 \ x03- \ xFD \ xD4C \ x828 \ xDFai! \ XB1 \ x87 \ x96l \ x8E \ xF6a \ x00 \ x059 \ xC4 \ xF1y: \ x89 \ xff $ d^\ x87 \ xE5 \ x00 \ x00z \ xC0' \ x00g \ x00 \ x9C \ xC0 \ x11 \ xC0 \ x07 \ xC0 \ x0C \ xC0 \ x02 \ x00 \ x05 \ xC00 \ xC0, \ xC0 (\ xC0 $ \ xC0 \ x14 \ xC0 "400 173" - "" - " 2016/04/09 1 9:15:17 [info] 7 # 7: * İstemci istek satırını okurken istemciden geçersiz müşteri gönderildi, müşteri: 10.48.0.1, sunucu: istek: "2. 6OK 4f = 4 jЁǐ

ben tam bir kayıp am - olmayan tüm WebSocket yolları (sol basitlik için orijinal pasajı dışında) :(yardım lütfen SSL ile çalışıyoruz ve TLS ile WebSocket çalışır Ayrıca :(

Eğer yardımcı oluyorsa, Nginx'i GCP üzerinde Kubernetes'in içinde bir Docker kabı olarak çalıştırıyorum.

cevap

6

Bütün gün bunu boşa harcadığımı sanmıyorum. MQTT.JS istemcisinde, URL'yi wss://my.domain.com/ws'dan wss://my.domain.com:443/ws'a değiştirdim ve işe yaradı. Buradan çıkıp, birilerinin zamanını kurtarmasını umuyoruz.