通过HTTPS和Nginx进行RabbitMQ管理

达里奥·扎德罗(Dario Zadro)

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

这是我的rabbitmq.conf文件:

[
  {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时一切正常

我的nginx文件如下所示:

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

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

https://example.com/rabbitmq/

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

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

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

任何帮助将非常感激!

达里奥·扎德罗(Dario Zadro)

我最终恢复为默认的rabbitmq.config文件,然后根据另一个我现在找不到的stackoverflow答案,将我的nginx配置块修改为以下内容。

    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文件,这导致了问题并已将其禁用。

我将尝试逐段重新启用SSL,但示例URL现在仍在起作用:

https://example.com/rabbitmq/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章