Redis配置外网可访问(redis远程连接不上)的方法

默认情况下,当我们在部署了redis服务之后,redis本身默认只允许本地访问。Redis服务端只允许它所在服务器上的客户端访问,如果Redis服务端和Redis客户端不在同一个机器上,就要进行配置。

使用redis报错

例如使用redis的PHP代码:

<?php
$redis = new Redis();
$redis->connect('192.168.1.4', 6379);
$redis->set('tag', 'hello');

echo 'name:', $redis->get('tag');
?>

执行以上代码时,报错如下:

Fatal error: Uncaught exception ‘RedisException' with message ‘Redis server went away' in xxxx
RedisException: Redis server went away in xxxxxx

错误分析

默认情况下,如果没有指定bind配置指令,则 Redis 监听来自服务器上所有可用网络接口的连接。可以使用bind配置指令来监听一个或多个选定的接口,在bind后拼接一个或多个 IP 地址即可。

服务器可以有一个网络接口(通俗的说网卡),或者多个。打个比方说机器上有两个网卡,分别为 192.168.205.5 和 192.168.205.6,如果 bind 192.168.205.5,那么只有该网卡地址接受外部请求,如果不绑定,则两个网卡口都接受请求。所以,如果要让公网可以连接该服务器上的 Redis 服务,除了直接注释掉 bind 这一行来绑定到所有的网络接口之外,更正确的做法应该是不注释

警告:如果运行 Redis 的计算机直接暴露在互联网上,绑定到所有的接口是很危险的,并会将实例暴露给互联网上的每个人。因此,默认情况下,我们取消注释以下绑定指令,这将强制 Redis 只监听 IPv4 回环接口地址(这意味着 Redis 只接受来自运行它的计算机上的客户端的连接)。

解决办法

1、找到自己服务器中redis的配置文件redis.conf 文件
如果不清楚,可执行 find / -name redis.conf
如果是你通过yum安装的redis,则redis的默认配置文件为:/etc/redis/redis.conf

修改 redis 的配置文件,将所有 bind 信息全部屏蔽。

# bind 192.168.1.100 10.0.0.1
# bind 192.168.1.8
# bind 127.0.0.1

2、如果你的服务器开启了防火墙策略,此时需要配置修改 Linux 的防火墙(iptables),开放对应的redis端口,该端口为你启动的redis配置文件中对应的端口号 ,默认是 6379。

-A INPUT -m state –state NEW -m tcp -p tcp –dport 6379 -j ACCEPT
……
-A INPUT -j REJECT –reject-with icmp-host-prohibited

请注意,一定要将 redis 的防火墙配置放在 REJECT 的前面。然后执行 service iptables restart。

3、重启redis服务

到此这篇关于Redis配置外网可访问(redis远程连接不上)的方法的文章就介绍到这了,更多相关Redis外网访问内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 解决Redis开启远程访问及密码问题

    Redis开启远程访问及密码,具体介绍如下所示: 一.开启远程访问 1.开放端口 firewall-cmd --zone=public --add-port=6379 firewall-cmd --zone=public --add-port=6379 --permanent 2.查看已开放端口 firewall-cmd --list-port 3.修改配置文件 vim redis.conf 将bind 127.0.0.1 注释或者改为bind 0.0.0.0 将protected-mode y

  • redis不能访问本机真实ip地址的解决方案

    redis无法访问本机真实ip地址 1.我在进行用jedis来连接redis时出现了问题: 我用Jedis jedis = new Jedis("127.0.0.1",6379);可以成功连接,但是我如果把127.0.0.1换成的本机地址如192.168.1.103发现会报错. 2.解决这个问题 要修改redis.windows.conf的配置文件(说明一下我的redis是在windows版的) 这里要改两个地方: 1.修改bind的ip 2.修改protected-mode yes为

  • redis远程连接不上的解决办法

    目录 问题描述: 如图所示: 解决步骤: 步骤一:注释掉redis.window.conf文件中的bind属性设置. 步骤二:把protected-mode属性设置no 问题描述: redis远程服务端运行在192.168.3.90计算机上,客户端计算机(ip:192.168.3.110)通过redsi-cli.exe客户端工具连接时,没有反应,连接不上. 如图所示: 解决步骤: 步骤一:注释掉redis.window.conf文件中的bind属性设置. 如图所示: 步骤二:把protected

  • Redis配置外网可访问(redis远程连接不上)的方法

    默认情况下,当我们在部署了redis服务之后,redis本身默认只允许本地访问.Redis服务端只允许它所在服务器上的客户端访问,如果Redis服务端和Redis客户端不在同一个机器上,就要进行配置. 使用redis报错 例如使用redis的PHP代码: <?php $redis = new Redis(); $redis->connect('192.168.1.4', 6379); $redis->set('tag', 'hello'); echo 'name:', $redis-&g

  • Linux安装mysql并配置外网访问的实例

    配置步骤 1.查看是否配置DNS 如果没有配置DNS参照前文配置DNS 配置相关 如果没有配置DNS yum命令找不到Linux软件库的 DNS配置免费的 DNS1=114.114.114.114即可,也可以加一个备用的DNS2=119.29.29.29 2.用yum安装mysql yum -y install mysql mysql-server mysql-dev 这里用yum 进行-y 同意操作,后面的三个软件分别是mysql, mysql-server,mysql-dev无关顺序 3.启

  • django自带的server 让外网主机访问方法

    命令: Python manage.py runserver 改为 python manage.py runserver 0.0.0.0:80 外网和127.0.0.1都能够访问 可能会出现DisallowedHost at / Invalid HTTP_HOST header: DisallowedHost at / Invalid HTTP_HOST header: 'x:8000'. You may need to add u'10.211.55.6' to ALLOWED_HOSTS.

  • 配置 SQL Server 2005 以允许远程连接的方法

    例如,在使用 SQLCMD 实用工具连接到 SQL Server 时收到以下错误消息: 复制代码 代码如下: Sqlcmd:错误:Microsoft SQL Native Client:建立到服务器的连接时发生错误.连接到 SQL Server 2005 时,默认设置 SQL Server 不允许远程连接这个事实可能会导致失败. 如果没有将 SQL Server 2005 配置为接受远程连接,则可能会发生此问题.默认情况下,SQL Server 2005 Express Edition 和 SQ

  • 远程连接Docker上的Mysql失败的分析与解决方案

    之前VMWare虚拟机CentOS7使用DHCP,导致只要重启操作系统,网卡IP地址就改变.于是把网卡修改为手工设定IP地址,结果导致远程连接mysql出现如下错误,花了很多时间还没有解决,最终偶然想到Docker被外部请求访问可能有中转行为才得到解决. ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.101.26' (10060) 附上网卡配置文件修改指令: cd /etc/sysconfig/system-scrip

  • Delphi远程连接Mysql的实现方法

    本文实例讲述了Delphi远程连接Mysql的实现方法,是Delphi数据库程序设计中非常重要的技巧.分享给大家供大家参考之用.具体方法如下: Delphi 通过ADOConnection链接远程Mysql数据库,要在安装软件的电脑上安装Mysql 驱动,没有的在百度下载,搜索mysql ODBC驱动就出来了 主要的链接代码如下: var srstring:string; srstring:='DRIVER={MySQL ODBC 3.51 Driver};SERVER='+Trim(SERVE

  • C#实现远程连接ORACLE数据库的方法

    本文实例讲述了C#实现远程连接ORACLE数据库的方法.分享给大家供大家参考.具体分析如下: 使用该方法,只需要传入几个必要的参数就可以进行数据库的远程连接测试了,连接成功返回TRUE,失败返回false. 参数说明: 第一个参数表示你在数据库中的用户,具有可以登录权限的 第二个参数表示用户的密码,没有加密 第三个参数表示登录的服务器的地址 第四个参数表示登录的服务器的端口号 第五个参数表示登录的数据库的名字 一定记得必要的引用 复制代码 代码如下: /// <summary> /// 测试数

  • 多种获取远程连接access数据库的方法

    远程(如通过互联网)连接access数据库的方法  前段时间很多人问远程(如通过互联网)连接access数据库的方法,最近写了个例子,与大家共享:  使用了TCP/IP,ADO及XML(需要安装Microsoft XML 4.0.).分服务器和客户端两部分,服务器可以多用户同时连接.远程连接Access数据库有很多方法,我以前已经比较详细的回答过(见下面所列的5种方法),我现在这个例子属于其中的第3种方法(不需要使用RDS或Web服务器).  --------------------------

  • Navicat Premium远程连接MySQL数据库的方法

    新建连接的一方相当于是客户端,被连接的相当于是服务端,步骤如下: 1.创建子账户,在Navicat查询界面键入以下授权命令,依次执行 GRANT ALL PRIVILEGES ON test.* to 'root333'@"%" IDENTIFIED by 'abc111' WITH GRANT OPTION; FLUSH PRIVILEGES; all PRIVILEGES意思是所有权限: on后面接的是数据库名.表名 如:test.* 的意思是授予的权限是数据库test下的所有表,

随机推荐