如何使用Nginx作为RabbitMQ WebSocket功能的反向代理?

3

我按照这个链接的步骤启用了RabbitMQ的Web-Stomp插件,因为我们需要使用STOMP over WebSockets,它已经生效。现在我需要一个Nginx服务器作为反向代理来面向我的RabbtMQ服务器。 以下是来自Nginx服务器的配置部分。

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

以下是访问服务器的JavaScript代码:

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,'/');

现在困扰我的问题是,如果我需要通过Websockets访问rabbitmq服务器,那么我应该在IP地址后面添加/ws,而且如果我直接访问它,它可以正常工作。然而,在Nginx配置文件的upstream部分中,似乎无法将/ws放在IP地址之后。所以,如果我需要使其正常工作,我该怎么办?谢谢。

3个回答

1
你可以尝试使用nginx stomp,它支持rabbit mq等,这是一个nginx模块。
# nginx.conf

server {
    ....
    location /sendqueue {
       stomp_pass stomp;
       stomp_command SEND;
       stomp_headers "destination:/amq/queue/stompqueue
                      persistent:false
            content-type:text/plain
                      content-length:38";
       stomp_body "This is new message sending from stomp";
    }
}

0

缺少';'

服务器 15.15.181.73:15674

->

服务器 15.15.181.73:15674;


0

我不确定这是否有帮助,但是您在附加的代码片段中拼写了错误的“upstream”。

 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 
    }

编程愉快!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接