Redis快速入门指出:
确保Redis用来侦听连接的端口(默认情况下为6379,如果在集群模式下运行Redis,则为16379,加上Sentinel的26379端口)会受到防火墙限制,因此无法与外部世界联系Redis。
有一个简短的命令来检查端口是否被防火墙 ?
通常情况下,我已经安装在主机上(几乎总是Ubuntu),而不是nmap。
for port in 6379 16379 26379;do nc -zv 127.0.0.1 $port;done
因为你应该使用另一台服务器从外部检查防火墙,而不是从本地主机检查,以确保应用程序被阻止。
一个简短的命令来检查端口是否被防火墙?
只有提供服务的主机或客户才可靠或不可靠。 请注意,除了基于主机的防火墙之外,客户端和服务器之间的networkingpath中可能还有防火墙和访问控制。
从客户端,您可以尝试build立到提供服务的主机上的正确端口的连接。 (通常是TCP服务的telnet host port , nc -vz host port或openssl s_client -connect host:port等)。
如果您可以成功build立连接 :或者确实没有防火墙 ,或者连接在防火墙中被列入白名单 。 后者是一个很大的区别,因为防火墙中可能有其他控制,可能会影响您的性能,例如速率限制,入侵检测等。
如果没有连接可以build立 ,有点运气,你会得到一个connection refused错误信息。 我们的规范connection refused Q&A详细介绍了如何从那里继续,以确定是否提供服务的主机configuration不正确,或者确实是防火墙阻止连接(或两者)。
如果没有build立 connection time-out ,并且connection time-out ,则可能是防火墙阻止了连接,因为它会丢弃连接尝试,而不是礼貌地拒绝连接,但也可能是路由问题,主机名parsing为不正确IP地址或其他东西。
您可以使用netcat或telnet来检查端口是否从外部机器打开。