gpt4 book ai didi

nginx - 我如何使用 Nginx 作为我的 RabbitMQ 的 websocket 函数的反向代理?

转载 作者:行者123 更新时间:2023-12-01 07:39:10 28 4
gpt4 key购买 nike

我通过关注 this 启用了 RabbitMQ 的 Web-Stomp 插件,因为我们需要通过 WebSockets 的 STOMP,它可以工作。现在我需要的是一个 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,如果我直接访问它就可以了。但是,我似乎无法将 /ws 放在 Nginx 配置文件中 ip 地址之后的 upstream 部分。那么如果我需要做这个工作我应该怎么做呢?谢谢。

最佳答案

你可以试试 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";
}
}

关于nginx - 我如何使用 Nginx 作为我的 RabbitMQ 的 websocket 函数的反向代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38655355/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com