我有一台运行 Linux Mint 18 的笔记本电脑,它在端口 80 上运行 http 服务器,在端口 8888 上运行 chronograf,在 8123 上运行家庭助理,在 1880 上运行 node-red 等。我如何在路由器 (openwrt) 或服务器本身上设置某种端口转发,以便 homeassistant.server 转发到 :8123 等...或者也许更好的是子域类型的想法哈。到 :8123,这样我就不需要记住所有不同的端口了。
答案1
简短的回答是“你不能”。虽然 DNS 中有一些用于处理端口的机制,但这些机制是高度协议特定的,并不常用。
然而,还是有解决方法的。
最简单的方法是将 Apache 配置为反向代理。HTTP 协议在给定的 IP 地址上建立连接,然后指定域。然后,使用 ProxyPass 模块和基于名称的虚拟主机,您可以将请求代理到另一个端口。
非常混乱的替代方案(从更接近您所问的网络 POV 的角度来看)是将多个 IP 地址绑定到您的 mint box(即虚拟接口),然后将每个子域映射到不同的 IP 地址。完成此操作后,您应该能够获得不错的软件来绑定到端口 80 上的特定 IP,或者如果失败,则使用 iptables 根据目标 IP 重定向数据包。