通常来说,生产环境下的Redis服务器只设置为仅本机访问(Redis默认也只允许本机访问)。有时候我们也许需要使Redi能被远程访问。此文介绍配置Redis允许远程访问。
配置
修改Redis配置文件/etc/redis/redis.conf,找到bind那行配置:
# bind 127.0.0.1
注意,此处的bind是指redis监听的网卡的ip.例如:bing:127.0.0.1,那么此时redis只能接受来自于本地回环网卡的命令,所以,若想在此配置下访问redis,则连接此redis服务的命令只能是redis-cli -h 127.0.0.1,也就是说该redis服务只能通过本地访问。
去掉#注释并改为:
bind 88.100.22.11
88.100.22.11为阿里云公网ip,那么此时该redis监听的是无线网卡,只能接受来自于无线网卡的命令。
指定配置文件然后重启Redis服务即可:
$ sudo redis-server /etc/redis/redis.conf
关于bind配置的含义,配置文件里的注释是这样说的:
# By default Redis listens for connections from all the network interfaces
# available on the server. It is possible to listen to just one or multiple
# interfaces using the "bind" configuration directive, followed by one or
# more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
# bind 127.0.0.1
远程连接
配置好Redis服务并重启服务后。就可以使用客户端远程连接Redis服务了。命令格式如下:
$ redis-cli -h {redis_host} -p {redis_port}
其中{redis_host}就是远程的Redis服务所在服务器地址,{redis_port}就是Redis服务端口(Redis默认端口是6379)。例如:
$ redis-cli -h 120.120.10.10 -p 6379
redis>ping
PONG
此时,已经可以通过远端(任意一台远程电脑)连接redis了,但是实际上我们并不希望其他人访问我们的redis服务,此时有两种解决方案:
1.给redis配置访问密码
找到redis.conf文件的如下配置:
#requirepass foobared
将注释去掉,并改为:
requirepass 123456
其中123456为密码。
2.通过配置防火墙来限制运行访问指定端口的远程终端,即:固定的端口只允许固定的ip访问,换言之:指定的端口只接收和处理来自指定ip主机的请求。
防火墙的配置比较多,可参考配置:http://www.360doc.com/content/13/0808/15/13084517_305613422.shtml