赞
踩
原文网址:Redis--设置外部(公网)可以访问_IT利刃出鞘的博客-CSDN博客
本文介绍如何将Redis设置为外网可以访问。
默认情况下,Redis服务端只允许它所在服务器上的客户端访问,如果Redis服务端和Redis客户端不在同一个机器上,就要进行配置。
修改redis.conf
原来的配置:
bind 127.0.0.1
修改为:
#bind 127.0.0.1
或者:
bind 0.0.0.0
来源于redis.conf的github地址:https://github.com/redis/redis/blob/unstable/redis.conf
说明
默认情况下,如果没有指定bind配置指令,则 Redis 监听来自服务器上所有可用网络接口的连接。可以使用bind配置指令来监听一个或多个选定的接口,在bind后拼接一个或多个 IP 地址即可。例如:
- bind 192.168.1.100 10.0.0.1
- bind 127.0.0.1 ::1
警告:如果运行 Redis 的计算机直接暴露在互联网上,绑定到所有的接口是很危险的,并会将实例暴露给互联网上的每个人。因此,默认情况下,我们取消注释以下绑定指令,这将强制 Redis 只监听 IPv4 回环接口地址(这意味着 Redis 只接受来自运行它的计算机上的客户端的连接)。
如果你确定希望你的实例能够监听所有的接口,只需要注释下面的这一行即可。
bind 127.0.0.1
网络接口
bind 是 network interfaces,即网络接口(网卡)。服务器可以有一个或者多个网络接口。可以使用 ifconfig 查看当前 Linux 服务器上的网络接口。
- $ ifconfig
- docker0 Link encap:Ethernet HWaddr 3A:F3:20:12:AE:6A
- inet addr:192.168.42.1 Bcast:0.0.0.0 Mask:255.255.255.0
- UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
- RX packets:362879 errors:0 dropped:0 overruns:0 frame:0
- TX packets:894703 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:0
- RX bytes:28218097 (26.9 MiB) TX bytes:1326305089 (1.2 GiB)
-
- eth0 Link encap:Ethernet HWaddr 00:16:3E:08:18:35
- inet addr:10.25.102.37 Bcast:10.25.103.255 Mask:255.255.252.0
- UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
- RX packets:4958304 errors:0 dropped:0 overruns:0 frame:0
- TX packets:2766733 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:534516269 (509.7 MiB) TX bytes:13382719049 (12.4 GiB)
-
- eth1 Link encap:Ethernet HWaddr 00:16:3E:08:13:6B
- inet addr:120.76.207.187 Bcast:120.76.207.255 Mask:255.255.252.0
- UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
- RX packets:13183600 errors:0 dropped:0 overruns:0 frame:0
- TX packets:14070363 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:6460933699 (6.0 GiB) TX bytes:8462002985 (7.8 GiB)
-
- lo Link encap:Local Loopback
- inet addr:127.0.0.1 Mask:255.0.0.0
- UP LOOPBACK RUNNING MTU:65536 Metric:1
- RX packets:156288093 errors:0 dropped:0 overruns:0 frame:0
- TX packets:156288093 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:0
- RX bytes:19039024606 (17.7 GiB) TX bytes:19039024606 (17.7 GiB)
-
- veth802443e Link encap:Ethernet HWaddr 56:E8:12:D0:88:96
- UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
- RX packets:120 errors:0 dropped:0 overruns:0 frame:0
- TX packets:162 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:0
- RX bytes:44625 (43.5 KiB) TX bytes:18533 (18.0 KiB)
我的服务器是阿里云的ECS,当前有5个网络接口。
网络接口 | 说明 |
---|---|
docker0 | 安装 docker 时自动创建的网桥 |
eth0 | 阿里云内网接口 |
eth1 | 阿里云公网接口 |
lo | 本地回环接口 |
veth88f3e3c | 运行 docker 容器创建的 veth pair 的一端 |
所以,如果要让公网可以连接该服务器上的 Redis 服务,除了直接注释掉 bind 这一行来绑定到所有的网络接口之外,更正确的做法应该是不注释,再绑定多 eth1 这个公网接口,地址是 120.76.207.187。
bind 127.0.0.1 120.76.207.187
然后重启下 redis 服务即可,这样配置,Redis 就只监听 IPv4 的本地回环接口和公网接口。
修改redis.conf
配置方法
protected-mode no
Reids默认开启保护模式(protected-mode yes),开启之后只有本机可以连接,其他机器无法连接。
保护模式开启的两个条件
修改redis.conf
requirepass yourPassword
设置iptables规则,允许外部访问6379端口。
iptables -I INPUT 1 -p tcp -m state --state NEW -m tcp --dport 6379 -j ACCEPT
iptables save
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。