我有一个远程服务器,它有一个可公开访问的 IP 地址。在此服务器的端口上,元素通过各种端口托管到 Web。因此,在连接到同一网络的另一台 PC 上,我可以转到 [server_ip]:[port] 并查看服务器处理器 A 上托管的应用程序。
我面临的挑战是服务器有第二个处理器 (B),只能通过处理器 A 访问。例如,连接到服务器处理器 A,我可以通过 SSH 连接到处理器 B。但是没有到处理器 B 的公共连接我的目标是在处理器 B 上托管应用程序之一,但允许从外部访问其“Web 界面”。
因此,尝试加载处理器 B 上托管的网页的流程图必须通过处理器 A 进行路由。
请求网页的 PC -> 服务器处理器 A -> 服务器处理器 B
我一直在尝试通过 ssh 隧道来完成此任务,但似乎无法使其发挥作用。两个处理器的 IP 地址似乎位于它们自己的接口上,因此我猜测我需要以某种方式允许服务器处理器 A 知道对某个报告的请求需要转发到处理器 B。
这可能吗?
答案1
这看起来像是一个直接的端口转发示例。无论“处理器”是什么意思,您都可以尝试:
hostB$ ssh -R8080:127.0.0.1:80 hostA
这做出了一些假设,我可以根据您所做的任何澄清进行调整。到目前为止我们所拥有的内容如下:
hostB$
从主机 B 的 CLI 启动命令(您也可以从 A 开始,但命令略有不同)ssh
使用安全外壳...-R8080:127.0.0.1:80
转发到右隧道的远程端,端口 8080 并将其发送到本地端的 127.0.0.1 端口 80。hostA
hostA 的 dns 名称。如果您知道 IP 地址,也可以直接使用它
请注意,进行网页调用的客户端需要指定正确的端口。您可以在地址后执行此操作:port
,例如:http://192.168.0.99:8080
如果出于某种原因,您需要所有调用都在端口 80 上进行,并且某些调用由 A 提供服务,其他调用由 B 提供服务,那么您将需要在 A 上进行一些重写规则或代理。
答案2
您所描述的内容可以通过反向代理来完成,您可以使用大多数 HTTP 服务器(例如 Apache 的 HTTPD 或 NGINX)来设置反向代理。您可以在 PC A 上安装和配置反向代理。