我在家庭网络上托管了一系列单独的应用服务(例如 Plex)。有些托管在同一网络上的单独物理机器上。从我的网络外部,我希望能够将它们全部托管在同一个端口上,例如端口 80。现在,在我的 LAN 内部,这些站点的访问方式如下:
从外面看,我想这样接待他们(分别)
- http://www.myhomeserver.com/service1
- http://www.myhomeserver.com/service2
- http://www.myhomeserver.com/service3
我没有运行任何 Linux 机器,但我有一台 Synology Diskstation。因此,如果可能的话,我希望我的 Synology 充当中间人,将所有这些东西整合在一起。我对网络托管不太熟悉,所以我不知道从哪里开始。正确的设置方法是什么?当应用程序可能希望托管在专用端口上时,是否需要应用程序本身知道这个特殊的 URL 设置?
答案1
我在家庭网络上托管了一系列单独的应用服务(例如 Plex)。[...] 从 [我的网络] 外部,我想像这样(分别)托管它们
http://www.myhomeserver.com/service1 http://www.myhomeserver.com/service2 http://www.myhomeserver.com/service3
正如@grawity 指出的那样,关键字是“反向代理”。如果可以使用“http://”访问接口,则该接口应该有资格进行代理。
我建议你研究一下阿帕奇(可能通过Apache 休息室如果你决定使用 Windows)mod_proxy已启用(可能还有一些附加模块,例如mod_proxy_html)。您的基本设置(如果不使用 NAS)将使用路由器和(半)专用计算机来捕获传入的 Web 请求。
我没有运行任何 Linux 机器,但我确实有一台 Synology Diskstation。因此,如果可能的话,我希望我的 Synology 可以充当将所有这些东西整合在一起的中介[。]
您必须考虑您个人 NAS 型号的功能,因为这可能是或不可能实现的。
特别是,许多 NAS 设备使用DLNA基于网络通信来服务媒体,这本质上与你提出的方案不兼容(你必须将你的策略改为VPN对于任何基于 DLNA 的内容,例如OpenVPN)。如果我没记错的话,有些 NAS 设备能够通过 FTP 传输文件,这可以可能与类似的东西兼容mod_proxy_ftp. 也可能存在网络界面或其他合适的网络服务/代理功能。
请注意,这不仅适用于您的 NAS。您还需要调查您的服务的功能。例如,Plex 默认作为 DLNA 服务器运行。要按照您的建议代理此设置,您可能必须使用 Web 界面(默认端口 32400)。
我不太熟悉网络托管,所以我不知道从哪里开始。
获取某种域名并将其指向您的网络。有很多教程介绍如何执行此操作,并且(理论上)可以完全免费执行。
确保您的路由器设置正确(主要是端口转发)并使用基本的 Web 服务器设置测试您的外部连接(同样,有很多在线教程)。
一旦确定可以使用 HTTP 从外部连接网络,请为您的应用程序设置反向代理(和/或为您的型号启用正确的 NAS 功能)。根据需要进行测试和故障排除。
当应用程序可能希望托管在专用端口上时,代理是否要求应用程序本身知道这个特殊的 URL 设置?
根据您的设置,可能会有一些特殊设置(例如,带有 SSL 的 Plex - 不是必需的),但大多数情况下,不需要应用程序方面有任何额外的知识。