2016-07-29 82 views
3

我已經啓用RabbitMQ的Web-Stomp插件,遵循this,因爲我們需要STOMP over WebSockets,並且它可以工作。現在我需要的是一個Nginx服務器作爲我的RabbtMQ服務器前面的反向代理。 以下是Nginx服務器的配置部分,如下所示。如何使用Nginx作爲我的RabbitMQ的websocket函數的反向代理?

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; 
      } 
    } 
} 

這裏是訪問服務器

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,'/'); 
的JavaScript代碼

現在有什麼困惑我的是,如果我需要訪問過的WebSockets的RabbitMQ的服務器,那麼我應該在IP地址後追加/ws ,如果我直接訪問它,它會起作用。但是,似乎我不能將/ws放在部分之後的Nginx配置文件中的IP地址。那麼如果我需要做這個工作,我該怎麼做?謝謝。

回答

0

我不確定這是否有幫助,但是您在附加的代碼段中上游拼寫錯誤。

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

應該是:

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

編碼快樂!