小编典典
Redis旨在在后端应用程序后面的安全网络上工作。客户端应用程序不应直接连接到Redis。对于2层应用程序,它使Redis成为糟糕的选择。
现在,如果您仍要使用Redis,则有几种选择。您可以将Redis服务器封装在HTTP接口中。这就是nginx
redis2模块所提供的。您可能还想看看webdis,这是相似的(并且不依赖于nginx)。Webdis提供了一些访问控制机制。请参阅文档。
另一个解决方案是按照您的建议建立隧道。我不会为此使用nginx,而只会使用普通的旧SSH。假设Redis服务器在计算机B(端口6379)上运行,而客户端在计算机A上运行。
在机器A上,我可以运行:
ssh user@host_B -L 7008:host_B:6379 -N
它将打开从本地端口7008(任意选择)到A到B的隧道,并等待。应该在主机B上声明该用户,并且知道其密码。在仍然位于主机A上的另一个会话中,我们现在可以运行:
redis-cli -p 7008 ping
请注意,使用的是标准Redis客户端。隧道以透明的方式为客户端处理身份验证,加密和可选的压缩。
现在,您的客户端是一个Java应用程序,您可能不想运行SSH命令来设置隧道。希望您可以使用Jsch包直接从Java打开隧道。这是Jedis的示例:
import redis.clients.jedis.*;
import java.util.*;
import com.jcraft.jsch.*;
public class TestTunnel {
Jedis jedis;
Session sess