通过HTTPS和Nginx进行RabbitMQ管理 [英] RabbitMQ Management Over HTTPS and Nginx

查看:562
本文介绍了通过HTTPS和Nginx进行RabbitMQ管理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用nginx通过HTTPS/SSL访问RabbitMQ接口,但无法弄清丢失的内容.

I'm trying to access the RabbitMQ interface over HTTPS/SSL with nginx, and I can't figure out what I'm missing.

这是我的Rabbitmq.conf文件:

Here's my rabbitmq.conf file:

[
  {ssl, [{versions, ['tlsv1.2', 'tlsv1.1']}]},
  {rabbit, [
      {reverse_dns_lookups, true},
      {hipe_compile, true},
      {tcp_listeners, [5672]},
      {ssl_listeners, [5671]},
      {ssl_options, [
        {cacertfile, "/etc/ssl/certs/CA.pem"},
        {certfile,   "/etc/nginx/ssl/my_domain.crt"},
        {keyfile,    "/etc/nginx/ssl/my_domain.key"},
        {versions, ['tlsv1.2', 'tlsv1.1']}
      ]}
    ]
  },
  {rabbitmq_management, [
    {listener, [
      {port, 15671},
      {ssl,  true},
      {ssl_opts, [
        {cacertfile, "/etc/ssl/certs/CA.pem"},
        {certfile,   "/etc/nginx/ssl/my_domain.crt"},
        {keyfile,    "/etc/nginx/ssl/my_domain.key"},
        {versions, ['tlsv1.2', 'tlsv1.1']}
      ]}
    ]}
  ]}
].

重新启动rabbitmq-server一切正常

All works ok when I restart rabbitmq-server

我的nginx文件如下:

My nginx file looks like this:

location /rabbitmq/ {
        if ($request_uri ~* "/rabbitmq/(.*)") {
                proxy_pass https://example.com:15671/$1;
        }
}

现在,我猜测ngnix配置中有些内容无法解析HTTPS URL,因为尝试浏览时出现504个超时错误:

Now, I'm guessing there's something with the ngnix config not being able to resolve the HTTPS URL, as I'm getting 504 timeout errors when trying to browse:

https://example.com/rabbitmq/

很显然,这不是正确的FQDN,但是如果没有/rabbitmq/

有人能够通过FQDN和HTTPS在外部连接上使用RabbitMQ Management Web界面吗?

Has anyone been able to use the RabbitMQ Management web interface on an external connection over a FQDN and HTTPS?

我是否需要在专门用于15671端口的Nginx配置中创建一个新的服务器"块?

Do I need to create a new "server" block in nginx config dedicated to the 15671 port?

任何帮助将不胜感激!

推荐答案

我最终返回到默认的Rabbitmq.config文件,然后根据另一个我无法获得的stackoverflow答案,将我的nginx config块修改为以下内容立即找到.

I ended up reverting back to the default rabbitmq.config file, then modified my nginx config block to the below, based on another stackoverflow answer that I can't find right now.

    location ~* /rabbitmq/api/(.*?)/(.*) {
        proxy_pass http://127.0.0.1:15672/api/$1/%2F/$2?$query_string;
        proxy_buffering                    off;
        proxy_set_header Host              $http_host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location ~* /rabbitmq/(.*) {
        rewrite ^/rabbitmq/(.*)$ /$1 break;
        proxy_pass http://127.0.0.1:15672;
        proxy_buffering                    off;
        proxy_set_header Host              $http_host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

此外,我在浏览器中缓存了JS文件,这导致了问题并已将其禁用.

Also, I had browser caching for JS files, which was causing issues and have disabled that.

我将尝试逐段重新启用SSL,但示例网址目前仍在起作用:

I will try to re-enable SSL piece-by-piece but do have the example URL working for now:

https://example.com/rabbitmq/

这篇关于通过HTTPS和Nginx进行RabbitMQ管理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆