![使用 nginx 或其他任何工具将所有请求从一台机器代理到另一台机器](https://linux22.com/image/785728/%E4%BD%BF%E7%94%A8%20nginx%20%E6%88%96%E5%85%B6%E4%BB%96%E4%BB%BB%E4%BD%95%E5%B7%A5%E5%85%B7%E5%B0%86%E6%89%80%E6%9C%89%E8%AF%B7%E6%B1%82%E4%BB%8E%E4%B8%80%E5%8F%B0%E6%9C%BA%E5%99%A8%E4%BB%A3%E7%90%86%E5%88%B0%E5%8F%A6%E4%B8%80%E5%8F%B0%E6%9C%BA%E5%99%A8.png)
可以代理吗全部 请求到另一台服务器并保存相应的端口和协议?
我有一个家庭服务器(没有公共 IP)和 VDS(有公共 IP)。
我还使用 VPN(openVPN)在它们之间建立了连接。
所以现在,我的家庭服务器10.8.0.5
在虚拟网络中有 IP 地址。
因此,我正在寻找机会将所有到达 VDS 的请求代理到家庭服务器(通过nginx
或any another way
)
例如:
- 代理 ssh 连接:
端口:22
协议:TCP
应该代理端口 22使用协议TCP - 代理 http 请求:
端口:80
协议:HTTP
应该代理端口 80使用协议HTTP - 代理特定请求:
端口:任何港口
协议:任何协议
应该代理同一端口使用相同协议
有可能吗?如果可以,我该如何实现它?我可以使用哪些工具?
谢谢你!
答案1
如果我正确理解了您的描述和评论,您将需要在所有端口上执行 DNAT(目标网络地址转换...也称为端口转发),以便入站流量(带有服务器本身的目标地址)通过端口转发到 10.8.0.5。这可以在 iptables nat 表中轻松完成。
iptables --table nat --append PREROUTING --jump DNAT --to-destination 10.8.0.5
如果您需要允许与服务器本身的某些连接,请在此规则之前放置允许它的其他规则,如您的另一篇文章中所述“将所有流量(端口 3336 和其他一些端口除外)从 eth0 路由到特定 IP“关于同一主题,请参阅这篇文章。