Linux 中安装redis 外网可访问

本文详细介绍了解决从Windows环境下的PHP应用访问Linux中Redis服务的问题。通过修改Redis配置、调整防火墙设置,实现了跨平台的数据交互。适用于初学者理解Redis的安全策略与网络配置。
导读在 Linux 中安装了redis 服务。在 Windows 中安装了 xampp 环境,以供 PHP 运行。

Linux 中安装redis 外网可访问Linux 中安装redis 外网可访问
PHP 代码如下:

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

解错误分析及解决办法

错误的原因很简单,就是没有连接上 redis 服务,由于 redis 采用的安全策略,默认会只准许本地访问。需要通过简单配置,完成允许外网访问。

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

# bind 192.168.1.100 10.0.0.1 
# bind 192.168.1.8 
# bind 127.0.0.1

修改完成后,需要重新启动 redis 服务。

修改 Linux 的防火墙(iptables),开启你的 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。

至此,访问刚刚上面的代码,就能够链接到 redis 服务,并且能够正确显示了。

关于bind

翻看网上的文章,此处多翻译为"指定 redis 只接收来自于该 IP 地址的请求,如果不进行设置,那么将处理所有请求,在生产环境中最好设置该项"。这种解释会 totally 搞糊涂初学者,甚至是错误的。该处的英文原文为:

# If you want you can bind a single interface, if the bind option is not 
# specified all the interfaces will listen for incoming connections. 
# bind 127.0.0.1

该处说明 bind 的是interface,也就是说是网络接口。服务器可以有一个网络接口(通俗的说网卡),或者多个。打个比方说机器上有两个网卡,分别为 192.168.205.5 和 192.168.205.6,如果 bind 192.168.205.5,那么只有该网卡地址接受外部请求,如果不绑定,则两个网卡口都接受请求。

OK,不知道讲清楚没有,在举一个例子。在我上面的实验过程中,我是将bind项注释掉了,实际上我还有一种解决方案。由于我redis服务器的地址是 192.168.1.4 。如果我不注释bind项,还有什么办法呢?我可以做如下配置:

# bind 192.168.1.4

这里很多人会误以为绑定的ip应该是请求来源的ip。其实不然,这里应该绑定的是你redis服务器本身接受请求的ip。Linux就该这么学

要在Linux上设置Redis允许外部访问,你可以按照以下步骤进行操作: 1. 首先,修改Redis配置文件(redis.conf)。你可以使用命令`vi /usr/local/redis/redis.conf`打开配置文件。 2. 在配置文件中,找到并修改`bind`项的值。将其从默认值`127.0.0.1`改为`0.0.0.0`。这样Redis将会监听所有可用的网络接口,允许外部访问。 3. 同时,你可以为Redis设置访问密码。在配置文件中找到并取消注释`#requirepass foobared`这一行,并将`foobared`替换为你想要设置的密码。 4. 保存并关闭配置文件。 5. 接下来,你需要确保服务器的防火墙不会阻止Redis的入站连接。你可以关闭防火墙或者修改防火墙配置开放Redis的端口(默认为6379)。 6. 重新启动Redis服务,以应用配置的更改。你可以使用命令`service redis restart`或者`systemctl restart redis`来重启Redis服务。 7. 最后,你可以通过使用telnet命令测试连接到Redis。使用命令`telnet <Redis服务器IP> 6379`,将`<Redis服务器IP>`替换为你的实际IP地址。如果成功连接,你将看到Redis的欢迎信息。 通过按照上述步骤进行操作,你就可以在Linux上设置Redis允许外部访问了。请注意,为了安全起见,你应该使用强密码来保护你的Redis实例,并确保只有受信任的客户端可以访问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [解决linux环境安装redis外网访问遇到的坑](https://blog.youkuaiyun.com/abcdf123456er/article/details/105253489)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Linux安装redis并设置为外网可以访问](https://blog.youkuaiyun.com/qq_24831411/article/details/84938452)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值