Rails 求教:怎么在本地通过代理打开不能直连的服务器的连接呢?

wy406 · 2019年11月05日 · 最后由 wy406 回复于 2019年11月12日 · 765 次阅读

有一个需求是这样的: 本地可以访问A站点,A站点能访问B服务器,B服务器的一个链接要在本地打开的A站点的页面上打开。其中B服务器的链接是动态的,这样有什么好的解决方案吗?

共收到 6 条回复

我猜你说的是 反向代理?

  1. 可以通过ssh -L连上A,把B的站点的端口(比如80或者443,看你B服务器的链接背后是什么端口)代理到本地3000端口。
    • 比如B域名是b.com,B服务器的链接的端口是80,则$ ssh -L 3000:b.com:80 a_user@a_host
  2. 如果B服务器链接是域名解析到IP的,需要修改hosts文件把B服务器域名指向localhost。
  3. nginx添加配置,监听80(或者其他,还是看你服务器链接背后的端口),对B服务器域名代理到本地3000端口。
jicheng1014 回复

感谢帮助! 我一直认为这个是正向代理才能做到,看来我的方向可能就是错了的

tinyfeng 回复

我们这里是这样的,就是A服务器上发送一个http请求到B服务器,B服务器返回一个B服务器的url给A服务器,然后A服务器获取到B服务器给的url后展示在A服务器的前台,然后本地打开前台的这个链接。而且本地和B服务器实际上是不通的。 还有几点:

  1. 本地、A服务器、B服务器全都是ip的形式的,没有域名。
  2. B的ip地址是动态的,并且B返回的端口也是动态的。
  3. 用的还是apache服务器
wy406 回复

那是可以做到的,ssh连接其实就是以A作为一个跳板,可以让你在本地,通过本地端口能访问B。

如果没有域名解析,则可以通过ip映射,把B的ip映射到本地127.0.0.1,后面是一样的

tinyfeng 回复

那这样还得在本地搞一个服务器,做映射啊! 实际上本地就是一个个的后台管理员的机器,这个估计没法实现的。 还有就是其实从B服务器返回的链接是novnc的链接,我们的目的实际上是在本地可以打开B服务器的novnc页面,去在B服务器的novnc页面上输入命令去做各种操作的。而且novnc用的又是websocket。 我目前通过在网上查教程以及看到你们的回复后我想出一个方法:是在A服务器上的apache上配置一个http和websocket的反向代理,把B服务器返回的链接拼接到A服务器的一个地址,然后这个地址在本地打开的时候走A服务器的反向代理到B服务器上,这样就能联通了。 请教下,不知道这个方案是否可行

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册