访问代理后的Azure Redis缓存

hmtdttj4  于 8个月前  发布在  Redis
关注(0)|答案(1)|浏览(70)

从开发环境,开发人员需要访问Redis缓存。连接到Azure Redis缓存是通过端口6380上的socks协议完成的。
问题是外部访问互联网是通过我们公司的代理完成的。
如果是HTTP(S)访问,例如在nodejs中,我们使用npm包'dotenv',其中我们指定'HTTP(S)'代理设置(例如包ms-rest azure)。
但是在这里,我们没有找到任何解决方案,为代理使用的袜子访问。
在这种情况下,我们使用npm包'redis'。
有没有人有一个解决方案,为代理使用?

vhipe2zx

vhipe2zx1#

从代理背后的客户端直接连接到Azure Redis Cache似乎是不可能的。原因如下:

  1. Redis只支持通过telnet协议的tcp连接,如果你的代理不支持socks,这是不可行的。
    1.在我搜索了两个推荐的NodeJS redis客户端ioredisnode_redis后,两者都不支持通过代理构建连接。
    这里有两个可能的解决方案来解决您当前的情况。
    1.如果你的代理支持socks,你可以尝试创建一个新的redis客户端,在现有redis客户端的基础上修改一些代码来支持socks代理。
    1.推荐用于当前案例。我建议你可以在Azure上创建一个HTTP服务来处理来自代理背后的客户端的请求,它可以将HTTP请求的参数传递给Azure Redis Cache,并将结果 Package 到HTTP响应中。它是通过HTTP的Redis,比如solutious/bone
    希望有帮助。

相关问题