2016-07-29 24 views
3

Ich habe das Web-Stomp-Plugin von RabbitMQ aktiviert, indem ich this folge, weil wir STOMP über WebSockets benötigen und es funktioniert. Jetzt brauche ich einen Nginx-Server als Reverse-Proxy vor meinem RabbtMQ-Server. Hier ist der Konfigurationsteil von Nginx Server wie folgt.Wie kann ich Nginx als Reverse-Proxy für die Websocket-Funktion meines RabbitMQ verwenden?

http { 

    upstrem websocket { 
      # this is the actual rabbitmq server address 
      server 15.15.181.73:15674 
    } 

    server { 
      # the nginx server addres is 15.15.182.108 
      listen 80 default_server; 
      listen [::]:80 default_server ipv6only=on; 

    location /ws/ { 
       proxy_pass http://websocket; 
       proxy_http_version 1.1; 
       proxy_set_header Upgrade websocket; 
       proxy_set_header Connection upgrade; 
      } 
    } 
} 

Und hier ist der JavaScript-Code für den Zugriff auf den Server

var WebSocket = require('ws'); 
var Stomp = require('stompjs'); 
var ws = new WebSocket('ws://15.15.182.108/ws', { 
    protocolVersion: 8, 
    origin: 'http://15.15.182.108/ws', 
    rejectUnauthorized: false 
}); 

var client = Stomp.over(ws); 
var on_connect = function(){ 


     client.send("/queue/test", {priority: 9}, "Hello, STOMP for /queue/test"); 

}; 

var on_error = function(error){ 
    console.log("error"); 
    console.log(error.headers.message); 
}; 

client.connect('test','test',on_connect,on_error,'/'); 

Nun, was verwirrend mich ist, dass, wenn ich den rabbitmq Server über Websockets zugreifen müssen, dann sollte ich /ws nach der IP-Adresse anhängen und es funktioniert, wenn ich direkt darauf zugreife. Es scheint jedoch, dass ich die /ws im upstream Abschnitt nach der IP-Adresse in der Nginx-Konfigurationsdatei nicht setzen kann. Was soll ich tun, wenn ich diese Arbeit machen muss? Vielen Dank.

Antwort

0

Ich bin mir nicht sicher, ob dies hilfreich ist, aber Sie haben in dem Snippet, das Sie angehängt haben, einen Upstream geschrieben.

upstrem websocket { 
      # this is the actual rabbitmq server address 
      server 15.15.181.73:15674 
    } 

sollte sein:

upstream websocket { 
      # this is the actual rabbitmq server address 
      server 15.15.181.73:15674 
    } 

Glücklich Coding!