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


Posted in Redis onDecember 24, 2022

默认情况下,当我们在部署了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外网访问内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Redis 相关文章推荐
解决redis sentinel 频繁主备切换的问题
Apr 12 Redis
redis cluster支持pipeline的实现思路
Jun 23 Redis
解析redis hash应用场景和常用命令
Aug 04 Redis
Redis分布式锁Redlock的实现
Aug 07 Redis
Redis如何实现分布式锁
Aug 23 Redis
Redis的字符串是如何实现的
Oct 24 Redis
Redis中有序集合的内部实现方式的详细介绍
Mar 16 Redis
redis调用二维码时的不断刷新排查分析
Apr 01 Redis
muduo TcpServer模块源码分析
Apr 26 Redis
Redis入门基础常用操作命令整理
Jun 01 Redis
Redis全局ID生成器的实现
Jun 05 Redis
Redis实战之Lettuce的使用技巧详解
Dec 24 #Redis
python中使用redis用法详解
Dec 24 #Redis
Redis主从复制操作和配置详情
Sep 23 #Redis
基于Redission的分布式锁实战
基于redis+lua进行限流的方法
Jul 23 #Redis
Redis过期数据是否会被立马删除
Jul 23 #Redis
如何使用注解方式实现 Redis 分布式锁
Jul 23 #Redis
You might like
php 操作符与控制结构
2012/03/07 PHP
php递归创建和删除文件夹的代码小结
2012/04/13 PHP
PHP生成二维码的两个方法和实例
2014/07/01 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
基于laravel缓冲cache的用法详解
2019/10/23 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
使用dynatrace-ajax跟踪JavaScript的性能
2010/04/12 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
2013/12/05 Javascript
node.js中的Socket.IO使用实例
2014/11/04 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
基于AngularJS实现iOS8自带的计算器
2016/09/12 Javascript
JS比较两个数值的大小实例
2016/11/25 Javascript
js仿微信语音播放实现思路
2016/12/12 Javascript
使用node.js实现微信小程序实时聊天功能
2018/08/13 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
vue-froala-wysiwyg 富文本编辑器功能
2019/09/19 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
深入理解Python中各种方法的运作原理
2015/06/15 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
selenium 安装与chromedriver安装的方法步骤
2019/06/12 Python
python如何使用Redis构建分布式锁
2020/01/16 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
python中有函数重载吗
2020/05/28 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
Linux上比较文件的命令都有哪些
2013/09/28 面试题
2016年圣诞节义工活动总结
2016/04/01 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript