【问题标题】:Redis bind to more than one IPRedis 绑定多个 IP
【发布时间】:2013-04-13 18:31:12
【问题描述】:

在redis.conf中正常设置是

绑定 127.0.0.1

我也想让redis监听另一个ip(比如我本地的开发地址)

我试过了

绑定 127.0.0.1, 123.33.xx.xx

但这不起作用。我在文档中或通过谷歌搜索找不到任何相关内容。希望有人能帮忙。

【问题讨论】:

  • 正常的设置是根本不设置bind,这会使Redis绑定到所有接口。我不确定你是否可以让它听两个(或更多)特定地址(它没有记录它可以,AFAIK)。
  • 我不确定我是否理解了bind的意思,所以如果将bind行注释掉,是否意味着任何人都可以连接到你的redis服务器并获取内容?
  • 如果你要求它监听多个接口,只要监听所有可能的并使用防火墙来限制对服务的访问。
  • @taro 那应该是一个答案(正确的恕我直言):)
  • @user2122139 是的,如果你把它注释掉,任何人都可以连接到它(除非他们以某种方式被防火墙或 NAT 或其他东西阻止)

标签: redis


【解决方案1】:

我也尝试找到该答案,就目前而言,这是不可能的,我在多个(但不是所有界面)上搜索答案时发现了这一点。这就是 http://code.google.com/p/redis/issues/detail?id=497 出现的原因,表示 redis 本身不支持它。

与 haproxy 结合使用,使得无法一次性将其放在 redis 前面。您需要使用不同的端口,或选择绑定 1 个 IP。

【讨论】:

    【解决方案2】:

    编辑:这是一个过时的答案。请查看更新的答案以获得解决方案。

    您不能将 redis 设置为侦听特定多个接口。如果需要多个接口,只需删除绑定线。

    正如@taro 指出的那样,使用防火墙来限制访问。

    【讨论】:

      【解决方案3】:

      自:

      --[Redis 2.8 Release Candidate 1 (2.7.101)] 发布日期:2013 年 7 月 18 日

      你可以:

      • [新] 能够绑定多个 IP 地址。

      干杯!!

      【讨论】:

      • 很高兴听到这个消息。非常感谢!
      • 这个答案实际上并没有解释如何绑定到多个 IP,它只是说现在可以。
      【解决方案4】:

      从 Redis 2.8 开始,确实可以绑定到多个 IP。只需用空格(不是逗号)分隔每个 IP。

      bind 127.0.0.1 123.33.xx.xx
      

      Source: Official default config

      【讨论】:

      • 当我添加第二个 IP 地址,然后添加 sudo systemctl restart redis-server.service (Ubuntu) 时,我收到一条错误消息,指出 redis-server.service: Start request repeated too quickly. 我必须 stop,然后等待一段时间再调用 start .
      • 在Ubuntu上,找到bind并在/etc/redis/redis.conf中修改
      • 不幸的是我收到了Job for redis-server.service failed because a timeout was exceeded.
      【解决方案5】:

      编辑:似乎正确的方法仍然是只有一行和一个或多个用空格分隔的IP

      这边:

      bind 127.0.0.1 10.150.220.121
      

      【讨论】:

      【解决方案6】:

      此答案并未过时,适用于旧版本和新版本

      理解的问题是Redis绑定显示客户端机器的地址,而是显示应该建立连接的接口。在您的示例中,如果您的本地开发(客户端)地址为 123.33.xx.xx,并不意味着您必须将地址与绑定完全相同,否则 Redis 服务将无法启动。

      所以如果你的 Redis 服务器机器上的ifconfig 显示你有一些类似这样的网络接口:

      eth0   Link encap:Ethernet  HWaddr 00:0c:... 
             inet addr:192.168.1.110  Bcast:192.168.1.255  Mask:255.255.255.0
      

      你可以把接口的地址192.168.1.110作为绑定,通过这个接口对Redis的每一个请求都应该成功。

      【讨论】:

      • 这对我来说非常有效。谢谢!这是一种安全的、生产环境认可的方法吗?
      • @CodingInCircles 实际上我不记得我是否在官方文档中遇到过这个解释。我只是自己尝试并找到它。我认为这是使 Redis 工作的唯一方法:D 也许出于安全原因,您可以使用一些防火墙等。在我的 Redis 服务器上,我没有任何与此方法有关的安全问题,而用过,谁知道呢……
      • 这似乎是让客户端连接到服务器并运行的最直接、最快捷的方法。我正在尝试启动并运行 Airflow 集群,并且我使用 Redis 作为后端。这种方法在启用保护模式的情况下工作得很好,所以我很受鼓舞,但不确定这是否完全安全。不过还是谢谢你的回答:)
      • CodingInCircles 祝你好运))
      【解决方案7】:

      这对我有用的唯一方法是添加单独的行:

      bind 111.222.33.44
      bind 127.0.0.1 ::1
      

      【讨论】:

        【解决方案8】:
        bind 127.0.0.1 192.168.152.2
        

        注意,我必须先放置 127.0.0.1,否则 192.x 将不会在系统启动时绑定。 但是另一个 systemctl restart redis 就足够了——可能是一个错误? (Debian 10 和 Redis 5.0.3)

        对于 ma​​cOS Homebrew 安装,请确保您正在编辑 /usr/local/etc/redis.conf 而不是模板文件:/usr/local/Cellar/redis/6.2.6/.bottle/etc/redis.conf

        【讨论】:

          猜你喜欢
          • 2015-02-21
          • 1970-01-01
          • 2019-03-30
          • 1970-01-01
          • 2016-06-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-17
          相关资源
          最近更新 更多