温馨提示×

Ubuntu RabbitMQ网络配置指南

小樊
37
2025-12-12 23:16:22
栏目: 智能运维

Ubuntu 上 RabbitMQ 的网络配置从监听地址、端口、协议到防火墙与云安全组,按下面步骤即可完成并验证


一 基础准备与端口规划

  • 安装与启停
    • 安装:sudo apt-get update && sudo apt-get install rabbitmq-server -y
    • 启动与开机自启:sudo systemctl start rabbitmq-server && sudo systemctl enable rabbitmq-server
    • 查看状态:sudo systemctl status rabbitmq-server
  • 常用端口
    • 5672/TCP:AMQP 0-9-1 客户端通信
    • 5671/TCP:AMQP 0-9-1 over TLS
    • 15672/TCP:Management 管理插件(HTTP API 与 Web UI)
  • 防火墙放行(UFW 示例)
    • 放行管理端口:sudo ufw allow 15672/tcp
    • 放行 AMQP 端口:sudo ufw allow 5672/tcp
    • 云服务器还需在控制台安全组放行对应端口

二 监听地址与协议配置

  • 配置文件位置与格式
    • 推荐在 /etc/rabbitmq/rabbitmq.conf 使用“新格式”(key = value)。若需使用旧式 Erlang 元组格式,可创建 /etc/rabbitmq/rabbitmq.config
  • 绑定到指定网卡或所有地址
    • 监听所有地址(默认):listeners.tcp.default = 5672
    • 仅本机:listeners.tcp.local = 127.0.0.1:5672
    • 指定内网地址:listeners.tcp.prod = 192.168.1.10:5672
    • 同时监听 IPv4 与 IPv6:可分别配置 local 与 local_v6
  • 启用 TLS
    • 启用并指定端口:listeners.ssl.default = 5671(需配置证书与密钥后生效)
  • 连接接入与握手
    • 并发接受器:num_acceptors.tcp = 10(可按并发量调优)
    • 握手超时:handshake_timeout = 10000(毫秒)
  • 示例(仅本机 + 指定内网)
    • listeners.tcp.local = 127.0.0.1:5672
    • listeners.tcp.prod = 192.168.10.20:5672
    • listeners.ssl.default = 5671
    • num_acceptors.tcp = 10
    • handshake_timeout = 10000
  • 应用配置
    • 检查配置语法无误后重启:sudo systemctl restart rabbitmq-server
    • 验证监听:ss -lntp | grep -E ‘(:5672|:5671)’netstat -lntp | grep -E ‘(:5672|:5671)’

三 访问控制与安全加固

  • 管理用户与远程登录
    • 默认账户 guest/guest 仅允许从 localhost 登录。远程访问请创建新用户:
      • 新增用户:sudo rabbitmqctl add_user admin StrongPass!
      • 设置角色:sudo rabbitmqctl set_user_tags admin administrator
      • 赋权(默认 vhost “/”):sudo rabbitmqctl set_permissions -p “/” admin “." ".” “.*”
      • 可选:禁用或删除 guest(生产建议)
  • 允许 guest 远程(不推荐)
    • /etc/rabbitmq/rabbitmq.conf 中设置:loopback_users.guest = false
    • 或在旧式配置 /etc/rabbitmq/rabbitmq.config 中设置:[{rabbit, [{loopback_users, []}]}].
  • 启用管理插件
    • 启用:sudo rabbitmq-plugins enable rabbitmq_management
    • 访问:http://服务器IP:15672(使用上面创建的管理员账号)
  • 安全建议
    • 优先使用 5671/TLS 或配合反向代理/负载均衡做 TLS 终止
    • 限制来源 IP、开启账号口令复杂度与轮换策略

四 云服务器与无公网 IP 的远程访问

  • 云服务器
    • 除本机防火墙外,务必在云平台安全组放行 5672/5671/15672(协议 TCP)
  • 无公网 IP 的两种常见方式
    • 内网穿透(示例)
      • 工具如 cpolar花生壳 可在本机与公网之间建立隧道,将本地 5672/15672 映射为可远程访问的 公网地址:端口
      • 在管理端创建 TCP 映射(AMQP 用 5672,管理界面可用 15672 或 HTTPS 映射),远程客户端使用映射后的地址与端口连接
      • 为稳定性建议选择“固定公网地址/域名”方案
    • 注意事项
      • 暴露到公网前务必启用 TLS、强口令与访问控制
      • 不建议直接开放 guest 远程登录到公网

五 快速验证与常见问题

  • 本机连通性
    • AMQP 端口:nc -vz localhost 5672(成功返回 succeeded)
    • 管理端口:curl -I http://127.0.0.1:15672(返回 200/302 类状态码)
  • 远程连通性
    • Linux/macOS:nc -vz 服务器IP 5672
    • Windows PowerShell:Test-NetConnection 服务器IP -Port 5672
  • 常见问题
    • 管理界面能打开但登录失败:多为 guest 仅本地 或账号权限不足,按第三节创建新用户并赋权
    • 端口不通:检查 UFW/安全组、监听地址是否绑定到正确 网卡/IP、服务是否运行
    • 配置不生效:确认编辑的是 /etc/rabbitmq/rabbitmq.conf,修改后 重启服务 并复核监听地址

0