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实现共同好友的思路详解
May 26 Redis
Django使用redis配置缓存的方法
Jun 01 Redis
Redis缓存-序列化对象存储乱码问题的解决
Jun 21 Redis
关于redisson缓存序列化几枚大坑说明
Aug 04 Redis
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
Feb 12 Redis
分布式架构Redis中有哪些数据结构及底层实现原理
Mar 13 Redis
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
Mar 16 Redis
Redis集群节点通信过程/原理流程分析
Mar 18 Redis
一文搞懂Redis中String数据类型
Apr 03 Redis
Grafana可视化监控系统结合SpringBoot使用
Apr 19 Redis
浅谈Redis缓冲区机制
Jun 05 Redis
浅谈Redis变慢的原因及排查方法
Jun 21 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实现LOL数据远程获取
2014/06/10 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
js获取ajax返回值代码
2014/04/30 Javascript
Node.js(安装,启动,测试)
2014/06/09 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
JS实现左右拖动改变内容显示区域大小的方法
2015/10/13 Javascript
requirejs + vue 项目搭建详解
2017/06/16 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
JavaScript实现精美个性导航栏筋斗云效果
2017/10/29 Javascript
Vue+jquery实现表格指定列的文字收缩的示例代码
2018/01/09 jQuery
JS扩展String.prototype.format字符串拼接的功能
2018/03/09 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
Vue 组件修改根实例的数据的方法
2019/04/02 Javascript
JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式
2019/07/10 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
Python如何判断数独是否合法
2016/09/08 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
Django框架模板用法入门教程
2019/11/04 Python
python返回数组的索引实例
2019/11/28 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
web字体加载方案优化小结
2019/11/29 HTML / CSS
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
办加油卡单位介绍信
2014/01/09 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL