ric*_*ier 3 nginx amqp rabbitmq
我正在尝试设置rabbitmq它可以通过nginx从外部(从非localhost)访问.
nginx的-rabbitmq.conf:
pika.ConnectionParameters(host=ip_address, port=55672, credentials=credentials)
rabbitmq.conf:
pika.ConnectionParameters(host=ip_address, port=55672, credentials=credentials)
默认情况下,guest用户只能从localhost进行交互,因此我们需要创建具有所需权限的其他用户,如下所示:
pika.ConnectionParameters(host=ip_address, port=55672, credentials=credentials)
pika.ConnectionParameters(host=ip_address, port=55672, credentials=credentials)
但是,当我尝试通过pika连接到rabbitmq时,我得到了ConnectionClosed异常
pika.ConnectionParameters(host=ip_address, port=55672, credentials=credentials)
- [引发ConnectionClosed异常] -
如果我使用相同的参数但将主机更改为localhost并将端口更改为5672,那么我连接ok:
pika.ConnectionParameters(host=ip_address, port=55672, credentials=credentials)
我在GCE Web控制台上打开了端口5672,通过nginx进行通信:nginx access.log文件显示
[30/Apr/2014:22:59:41 +0000]"AMQP\x00\x00\x09\x01"400 172" - "" - "" - "
其中显示了400状态代码响应(错误请求).
因此,通过外观,请求在通过nginx时失败,但在我们直接请求rabbitmq时有效.
有没有其他人有类似的问题/让rabbitmq通过nginx为外部用户工作?是否有一个rabbitmq日志文件,我可以看到每个请求并帮助进一步排除故障?
小智 14
由于 nginx 1.9 有用于 tcp 或 udp 的流模块(默认情况下未编译)。
我用 ssl 流配置了我的 nginx (1.13.3)
stream {
upstream rabbitmq_backend {
server rabbitmq.server:5672
}
server {
listen 5671 ssl;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_handshake_timeout 30s;
ssl_certificate /path/to.crt;
ssl_certificate_key /path/to.key;
proxy_connect_timeout 1s;
proxy_pass rabbitmq_backend;
}
}
Run Code Online (Sandbox Code Playgroud)
https://docs.nginx.com/nginx/admin-guide/security-controls/terminating-ssl-tcp/
您已将nginx配置为HTTP反向代理,但Rabbitmq配置为使用AMQP协议(请参阅https://www.rabbitmq.com/configure.html上的tcp_listeners说明)
为了让nginx做任何有意义的事情,你需要重新配置rabbitmq以使用HTTP - 例如http://www.rabbitmq.com/web-stomp.html.
当然,这可能会产生连锁反应,因为任何通过AMQP访问rabbitmq的客户端都必须重新配置/重新设计才能使用HTTP.
| 归档时间: |
|
| 查看次数: |
12383 次 |
| 最近记录: |