是否有一种内置的软件方式可以像下面这样进行基本的端口转发?
example.com/81/* -> example.com:81/*
example.com/82/* -> example.com:82/*
...
或者,对于子域,可能有类似的东西?
example.com/a/* -> a.example.com/*
example.com/b/* -> b.example.com/*
...
我知道可能存在速度问题,但我希望在只能通过路由器打开一个端口时基本上访问我的计算机上的所有端口。
我相信我可以让它与 Node.js 的管道一起使用,但这似乎可能是一种常见的需求。
编辑:我喜欢我所说的只有一个端口可用于与计算机通信。它位于防火墙后面。除了通过 ssh 连接到机器之外,我还想要一种简单的方法来访问服务器上的其他端口(仅访问 1 个端口),这不是很密集。
答案1
如果我正确理解你的问题,那并不是真的转发端口但HTTP 反向代理(添加了一些 URI 操作),并且这只适用于 HTTP 服务。
在你的第一个例子中:
example.com/81/* -> example.com:81/*
客户端必须连接到example.com:80
,然后针对匹配的 URI 发送语法上有效的 HTTP 请求(例如 GET 请求)/81/*
,然后反向代理将代表客户端连接到example.com:81
,并重新提交请求(通过删除修改)/81
其初始。
如果您尝试以这种方式连接到 example.com:143 中的 IMAP 邮件服务,则邮件客户端必须连接到目标上的端口 80 并发送消息,而不仅仅是连接到目标地址和端口像这样:
CONNECT example.com:143 HTTP/1.1
...然后继续使用标准 IMAP 协议。
据我所知,没有标准邮件客户端具有这样的功能,尽管技术上可以实现它。此外,HTTP 的 CONNECT 方法是安全敏感的,应严格控制其使用:允许 CONNECT 的不受限制的 HTTP 代理很容易被滥用。