目 录CONTENT

文章目录

Docker方式rabbitmq的安装

Jinty
2023-12-20 / 0 评论 / 0 点赞 / 170 阅读 / 5182 字

使用docker-compose安装

docekr-compose.yaml内容如下:

# https://hub.docker.com/_/rabbitmq/tags
# https://x-team.com/blog/set-up-rabbitmq-with-docker-compose/
# https://stackoverflow.com/questions/49742269/rabbitmq-management-over-https-and-nginx

version: "3"
services:
  rabbitmq:
    image: rabbitmq:3.9.29-management-alpine
    container_name: rabbitmq
    environment:
      RABBITMQ_DEFAULT_USER: guset
      RABBITMQ_DEFAULT_PASS: guset
      RABBITMQ_DEFAULT_VHOST: /
      # RABBITMQ_ERLANG_COOKIE: "uniqueerlangcookie"
      RABBITMQ_HIPE_COMPILE: 1
      # RABBITMQ_LOGS: /var/log/rabbitmq
      RABBITMQ_LOGS_CONSOLE: "console"
      RABBITMQ_MANAGEMENT_LOG_LEVEL: info
      # RABBITMQ_DISK_FREE_LIMIT: "{mem_relative, 0.1}"
      # RABBITMQ_VM_MEMORY_HIGH_WATERMARK: 0.4
      # RABBITMQ_CLUSTER_PARTITION_HANDLING: autoheal
    volumes:
      - /opt/service/rabbitmq/data:/var/lib/rabbitmq
    restart: always
    ports:
      - "15672:15672"
      - "5678:5672"
    networks:
      - rabbitmq_go_net

networks:
  rabbitmq_go_net:
    driver: bridge

配置Nginx代理

nginx.conf的部分内容如下:

upstream rabbitmq {
    server 127.0.0.1:15672;
  }
...
server {
...
# 域名访问 反向代理
     location /rabbitmq/api/ {
        rewrite ^ $request_uri;
        rewrite ^/rabbitmq/api/(.*) /api/$1 break;
        return 400;
        proxy_pass http://rabbitmq$uri;
        proxy_buffering                    off;
        proxy_set_header Host              $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/ {
      proxy_set_header HOST $host;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_connect_timeout 300s;
      proxy_send_timeout 300s;
      proxy_read_timeout 300s;
      proxy_pass http://rabbitmq/;
      # allow my.trusted.ip.addresses2;
      # deny all;
    }

}

  • 配置proxy_pass http://rabbitmq/ 中最后一个/ 的作用是转发的时候去掉请求url的rabbitmq 前缀。

  • 需要配置 location rabbitmq/api/ 才能不会出现404错误。

配置用戶

添加自定义用户:

docker exec -it  some-rabbitmq /bin/bash

rabbitmqctl add_user username passwd  # 添加用户,后面两个参数分别是用户名和密码
rabbitmqctl set_permissions -p / username ".*" ".*" ".*"  # 添加权限
rabbitmqctl set_user_tags username administrator  # 修改用户角色,将用户设为管理员

安装rabbitmq插件

Plugins — RabbitMQ

Community Plugins — RabbitMQ

docker部署将插件放在rabbitmq容器的插件路径下的方式(以延迟交换机插件为例)

  1. 查看对应容器的id:docker ps

  2. 找到容器中rabbitmq插件安装的位置(/pug)docker exec -it 容器id /bin/bash #进入运行中的容器

  3. 退出容器后,将宿主机上的插件拷贝到容器中rabbitmq插件安装的位置docker cp rabbitmq_delayed_message_exchange-3.9.0.ez 容器id:/plugins

  4. 进入容器中启用插件rabbitmq-plugins enable rabbitmq_delayed_message_exchange

  5. 进入管理页面验证(不需要重启rabbitmq服务)

遗留问题

访问Admin页面出错:
SyntaxError: Unexpected token 'catch' SyntaxError: Unexpected token 'catch' at EJS.Compiler.compile(xxx)

意思是要清理浏览器缓存,尝试了一下没效果,可能和版本有关。

参考资料

  1. https://www.rabbitmq.com/getstarted.html

  2. https://hub.docker.com/_/rabbitmq/tags

  3. https://x-team.com/blog/set-up-rabbitmq-with-docker-compose/

  4. https://stackoverflow.com/questions/49742269/rabbitmq-management-over-https-and-nginx

0

评论区