gre*_*ola 111 ubuntu configuration redis
我刚刚使用我的Ubuntu 10.10服务器上http://redis.io/topics/quickstart上的快速入门指南中的说明成功安装了Redis .我正在以dameon运行服务(因此可以通过init.d运行)
该服务器是具有内部和外部IP的Rackspace Cluster的一部分.主机在端口6379上运行(Redis的标准)
我在iptables中添加了一行以允许来自端口6379的传入连接,如下所示:
ACCEPT tcp -- anywhere anywhere tcp dpt:6379
Run Code Online (Sandbox Code Playgroud)
在我在另一台服务器上的PHP代码中,我正在尝试连接到新的Redis服务器:
$this->load->helper("iredis");
$hostname = "IP ADDRESS HERE";
$redis = new iRedis(array('hostname' => $hostname, 'port' => 6379));
Run Code Online (Sandbox Code Playgroud)
一旦我这样做 - 我总是拒绝连接.在我的redis.conf文件中,我将本地绑定命令注释掉,因此它应该监听的不仅仅是本地主机IP.我可以连接到本地计算机上的数据库,而不是在另一台服务器上.我已经尝试过外部和内部IP而没有运气.
有关使此工作的任何建议?
Ora*_*bîg 315
我一直坚持同样的问题,前面的答案对我没有帮助(尽管写得很好).
解决方案在这里:检查您的/etc/redis/redis.conf
,并确保更改默认值
bind 127.0.0.1
Run Code Online (Sandbox Code Playgroud)
至
bind 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
然后重启你的服务(service redis-server restart
)
然后,您现在可以检查redis是否正在侦听非本地接口
redis-cli -h 192.168.x.x ping
Run Code Online (Sandbox Code Playgroud)
(用您的IP地址替换192.168.xx)
重要说明:正如一些用户所说,在暴露于Internet的服务器上设置它是不安全的.您应确定redis受到任何符合您需求的方式的保护.
The*_*ill 121
首先,我要检查以确认它正在监听您期望的IP:
netstat -nlpt | grep 6379
Run Code Online (Sandbox Code Playgroud)
根据您的启动/停止方式,您可能没有实际重新启动实例.netstat会告诉你它是否正在听你认为的地方.如果没有,请重新启动它并确保它重新启动.如果它重新启动但仍未按您的意愿收听,请检查配置文件以确定.
在建立之后,它正在监听您期望的位置,从应该具有访问权限的远程节点尝试:
redis-cli -h REMOTE.HOST ping
Run Code Online (Sandbox Code Playgroud)
您也可以从本地主机尝试,但使用您希望它监听的IP而不是主机名或localhost.你应该在两种情况下都看到PONG作为回应.
如果没有,您的防火墙正在阻止您.这可能是本地IPTables,也可能是节点之间的防火墙.您可以向IPtables配置添加日志记录语句,以记录6379上的连接,以查看发生的情况.此外,尝试从本地和非本地到同一IP的redis ping应该是说明性的.如果它在本地但不是远程响应,我会依赖于您的节点IP表规则的复杂性,倾向于干预防火墙.
dea*_*ull 12
除了Orabîg给出的优秀答案:
我通过bind
完全删除该部分并设置protected-mode
为来解决了这个问题no
.
#bind 127.0.0.1
protected-mode no
Run Code Online (Sandbox Code Playgroud)
切勿在公开的服务器上使用此方法.
几天来,我一直在为与 Redis 的远程连接而苦苦挣扎。最后我做到了。这是我整理的完整检查清单,以供建立联系。上面的答案中给出了一些解决方案。然而,我希望我的答案是关于这个主题的 nano-wiki:) 我也添加了一些有用的链接。
$ redis-cli
127.0.0.1:6379>ping
PONG
127.0.0.1:6379>
Run Code Online (Sandbox Code Playgroud)
查看/etc/redis/redis.conf
配置(这是 Ubuntu 18.04 的默认位置,您可能在不同的位置):
# The following line should be commented
# requirepass <some pass if any>
Run Code Online (Sandbox Code Playgroud)
# The following line should be uncommented
protected-mode no
Run Code Online (Sandbox Code Playgroud)
# The following line should be commented
# bind 127.0.0.1 ::1
Run Code Online (Sandbox Code Playgroud)
(此处适用于 Ubuntu 18.04)检查它是否允许传入的互联网流量进入端口6379
(Redis 默认端口)
# To check if it the port is open
$ sudo ufw status
Status: active
To Action From
-- ------ ----
...
6379/tcp ALLOW Anywhere
6379/tcp (v6) ALLOW Anywhere (v6)
...
# To open the port
$ sudo ufw allow 6379/tcp
Run Code Online (Sandbox Code Playgroud)
不要忘记重新启动 Redis 服务以使更改生效并查看它是否正在运行:
$ sudo systemctl restart redis.service
$ sudo systemctl status redis
Run Code Online (Sandbox Code Playgroud)
从您的命令行使用redis-cli
,就好像 Redis 服务器在远程服务器上一样:
$ redis-cli -h <your-server-ip>
<your-server-ip>:6379> ping
PONG
<your-server-ip>:6379> exit
$
Run Code Online (Sandbox Code Playgroud)
如果您可以通过作为远程服务器连接的 Internet 服务器对 Redis 服务器进行 ping-PONG,那么远程 Redis 连接就可以正常工作。
以上所有使您的 Redis 数据对互联网上的任何人完全开放。
为了从根本上保护 Redis 的使用requirepass
和protected-mode yes
Redis 配置中的设置(见上文)并阻止危险的 Redis 命令(见上面的链接),更深入的理解见这篇文章和Redis 站点安全部分)。
一些帮助链接如何在 Ubuntu 18.04 上安装和保护 Redis以及如何设置 Ubuntu 18.04 防火墙。
希望能帮助到你。
归档时间: |
|
查看次数: |
147686 次 |
最近记录: |