我有一个运行多个应用程序的家庭服务器。我目前可以使用特定端口号远程访问这些服务。由于网络过滤的原因,当我使用某些计算机时,这对我来说不起作用。我正在寻找一种方法来“重定向”到不同的端口,同时仍然使用我输入的地址。此外,子域名不起作用,我必须使用文件夹路径。
例如:
URL that I type in Path I actually access
http://example.com http://example.com:80
http://example.com/plex http://example.com:32400
http://example.com/php http://example.com:8080
请注意,地址栏必须继续使用 example.com/service 类型的地址,而不是 example.com:port 地址。此外,并非所有服务都是网络主机。
有什么简单/免费的方法可以做到这一点吗?
答案1
http://example.com/plex
无论是框架(非常简单)还是反向代理(更复杂,但您可以在地址栏中看到的不仅仅是这些)都可以实现您想要的。
至于 RDP:您无需在浏览器中输入该信息。如果您确实需要,请上传已保存的 RDP 会话。然后,您每次都可以下载并打开该文件。
Apache 和 mod_proxy
Apache 通过以下方式提供代理支持mod_proxy
最基本的例子是这样的:
ProxyPass /foo http://foo.example.com/bar
ProxyPassReverse /foo http://foo.example.com/bar
这ProxyPass
指令确定将哪条路径传递给哪个上游服务器。ProxyPassReverse
使 Apache 重写一些响应头来掩盖上游服务器的地址。
您可能已经注意到,这种方法有一个主要缺点:响应页面中没有重写任何内容。因此,除非只有相对链接,否则此方法可能仅适用于单个请求。如果您“重命名” URL 的某些部分,则可能会出现其他问题。理想情况下,您选择的代理请求应用程序应明确支持与反向代理一起使用。
Plex 设置的一个基本示例如下:
ProxyPass /plex http://localhost:32400/
ProxyPassReverse /plex http://localhost:32400/
然而,Plex Media Server 似乎不太合作在这方面,所以你可能不得不重新考虑你的想法。普通重定向更容易配置,并且保证可以正常工作。不过,你不会在地址栏中获得一个不错的 URL。
当然,您也可以使用 nginx 进行反向代理,而且速度可能会快得多。