日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Redis配置外網可訪問(redis遠程連接不上)的方法_Redis

更新時間: 2023-01-29 編程語言

默認情況下,當我們在部署了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 監聽來自服務器上所有可用網絡接口的連接??梢允褂胋ind配置指令來監聽一個或多個選定的接口,在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服務

欄目分類
最近更新