从开发环境,开发人员需要访问Redis缓存。连接到Azure Redis缓存是通过端口6380上的socks协议完成的。问题是外部访问互联网是通过我们公司的代理完成的。如果是HTTP(S)访问,例如在nodejs中,我们使用npm包'dotenv',其中我们指定'HTTP(S)'代理设置(例如包ms-rest azure)。但是在这里,我们没有找到任何解决方案,为代理使用的袜子访问。在这种情况下,我们使用npm包'redis'。有没有人有一个解决方案,为代理使用?
vhipe2zx1#
从代理背后的客户端直接连接到Azure Redis Cache似乎是不可能的。原因如下:
telnet
socks
ioredis
node_redis
solutious/bone
1条答案
按热度按时间vhipe2zx1#
从代理背后的客户端直接连接到Azure Redis Cache似乎是不可能的。原因如下:
telnet
协议的tcp连接,如果你的代理不支持socks
,这是不可行的。1.在我搜索了两个推荐的NodeJS redis客户端
ioredis
和node_redis
后,两者都不支持通过代理构建连接。这里有两个可能的解决方案来解决您当前的情况。
1.如果你的代理支持
socks
,你可以尝试创建一个新的redis客户端,在现有redis客户端的基础上修改一些代码来支持socks代理。1.推荐用于当前案例。我建议你可以在Azure上创建一个HTTP服务来处理来自代理背后的客户端的请求,它可以将HTTP请求的参数传递给Azure Redis Cache,并将结果 Package 到HTTP响应中。它是通过HTTP的Redis,比如
solutious/bone
。希望有帮助。