Docker 中 EMQX 获取真实客户端 IP 地址

在 Docker 容器环境中运行 EMQX 时,客户端的 IP 地址可能会被 Docker 网络层所隐藏。本文将介绍如何在 Docker 中配置 EMQX,以获取客户端的真实 IP 地址。

问题背景

在 Docker 容器中运行 EMQX 时,客户端连接到 EMQX 后,EMQX 看到的 IP 地址可能是 Docker 容器的 IP 地址,而不是客户端的真实 IP 地址。这可能会导致一些问题,例如无法根据客户端 IP 地址进行访问控制。

解决方案

为了解决这个问题,我们可以在 EMQX 中配置 proxy_mode,以获取客户端的真实 IP 地址。以下是具体的步骤:

  1. 编辑 EMQx 的配置文件 etc/emqx.conf
  2. 添加或修改以下配置项:
    proxy_mode = on
    proxy_protocol = http
    
  3. 重启 EMQX 以使配置生效。

示例

假设我们有一个 Docker 容器,其中运行着 EMQX。以下是如何在 Docker 容器中配置 EMQX 的示例:

  1. 打开 Docker 容器的终端:

    docker exec -it <container_id> /bin/bash
    
  2. 编辑 EMQX 的配置文件:

    vi /opt/emqx/etc/emqx.conf
    
  3. 添加或修改以下配置项:

    proxy_mode = on
    proxy_protocol = http
    
  4. 保存并退出配置文件。

  5. 重启 EMQX:

    supervisorctl restart emqx
    

甘特图

以下是实现上述解决方案的甘特图:

gantt
    title EMQX 配置甘特图
    dateFormat  YYYY-MM-DD
    section 配置步骤
    编辑配置文件 :done, des1, 2023-04-01, 3d
    修改配置项      :active, 2023-04-04, 2d
    重启 EMQX       :        2023-04-06, 1d

结论

通过在 Docker 中配置 EMQX 的 proxy_modeproxy_protocol,我们可以成功获取客户端的真实 IP 地址。这将有助于解决访问控制等问题。希望本文对您有所帮助!

请注意,本文中的示例仅供参考,实际配置可能因版本和环境而异。在应用到生产环境之前,请确保充分测试。