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

我已经启用了RabbitMQ的Web-Stomp插件,因为我们需要通过WebSockets的STOMP,它的工作原理。 现在我需要的是一个Nginx服务器作为我的RabbtMQ服务器前面的反向代理。 下面是Nginx服务器的configuration部分。

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放在Nginxconfiguration文件中的ip地址之后的upstream部分。 那么如果我需要做这个工作,我该怎么做? 谢谢。