Redis配置外網(wǎng)可訪問(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'); ?>
執(zhí)行以上代碼時,報錯如下:
Fatal error: Uncaught exception ‘RedisException' with message ‘Redis server went away' in xxxx RedisException: Redis server went away in xxxxxx
錯誤分析
默認情況下,如果沒有指定bind配置指令,則 Redis 監(jiān)聽來自服務器上所有可用網(wǎng)絡(luò)接口的連接。可以使用bind配置指令來監(jiān)聽一個或多個選定的接口,在bind后拼接一個或多個 IP 地址即可。
服務器可以有一個網(wǎng)絡(luò)接口(通俗的說網(wǎng)卡),或者多個。打個比方說機器上有兩個網(wǎng)卡,分別為 192.168.205.5 和 192.168.205.6,如果 bind 192.168.205.5,那么只有該網(wǎng)卡地址接受外部請求,如果不綁定,則兩個網(wǎng)卡口都接受請求。所以,如果要讓公網(wǎng)可以連接該服務器上的 Redis 服務,除了直接注釋掉 bind 這一行來綁定到所有的網(wǎng)絡(luò)接口之外,更正確的做法應該是不注釋
警告:如果運行 Redis 的計算機直接暴露在互聯(lián)網(wǎng)上,綁定到所有的接口是很危險的,并會將實例暴露給互聯(lián)網(wǎng)上的每個人。因此,默認情況下,我們?nèi)∠⑨屢韵陆壎ㄖ噶睿@將強制 Redis 只監(jiān)聽 IPv4 回環(huán)接口地址(這意味著 Redis 只接受來自運行它的計算機上的客戶端的連接)。
解決辦法
1、找到自己服務器中redis的配置文件redis.conf 文件
如果不清楚,可執(zhí)行 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 的前面。然后執(zhí)行 service iptables restart。
3、重啟redis服務
到此這篇關(guān)于Redis配置外網(wǎng)可訪問(redis遠程連接不上)的方法的文章就介紹到這了,更多相關(guān)Redis外網(wǎng)訪問內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis從單點到集群部署模式(單機模式?主從模式?哨兵模式)
這篇文章主要為大家介紹了Redis從單點集群部署模式(單機模式?主從模式?哨兵模式)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11