首先,如果这个问题太简单,请允许我道歉。我确信它很简单,但我的主要问题是我不知道使用什么确切的术语来寻找答案。
在过去的几年里,我运行了一个家庭服务器来为我提供一些服务;即 Plex、Owncloud(最近更改为 Nextcloud)、一个提供 GUI 的 Webmin 服务器和一个仅用于向我提供系统通知更新的小型邮件服务器。
到目前为止,我只需使用服务器 IP 加上服务名称(例如,对于 Nextcloud,我只需导航到https://192.168.1.50/nextcloud
)或端口(webmin 是https://192.168.1.50:10000
,而 Plex 是https://192.168.50:32400
)即可访问所有内容
我一直想使用 bind9 来设置一个 dns 服务器,以便我可以通过域名而不是 IP 地址访问所有内容,今天有几个小时的空闲时间,我下定决心开始了。
我的 DNS 服务器本身运行正常。从我的笔记本电脑上,我可以 ping ubuntuserver
(我的服务器的主机名)或ubuntuserver.local.ftb
,其中local.ftb
是我选择的域。
请注意,这并不适合在我的本地网络之外访问,它仅仅是一个内部设置。
我还为 和 设置了 DNS 记录webmin.ubuntuserver.local.ftb
,nextcloud.ubuntuserver.local.ftb
并plex.ubuntuserver.local.ftb
让它们指向我的主服务器192.168.1.50
我的问题是,我是否可以设置 Apache 使其指向https://webmin.ubuntuserver.local.ftb
、https://192.168.1.50:10000
和https://nextcloud.ubuntuserver.local.ftb
?我推测 DNS 服务器不会处理此重定向https://192.168.1.50/nextcloud
,因为它似乎不处理端口,但 Apache 可以做到这一点吗https://plex.ubuntuserver.local.ftb
?https://192.168.1.50:32400
答案1
是的,Apache 和 Nginx 都支持“反向代理”,您可以根据整个 VirtualHost(请求的 Host 标头)甚至特定路径路由请求。查找指令ProxyPass
。
(请注意,客户端仅连接到 Apache,即前端 - 各个服务的端口不需要从外部访问。)
另一种选项(TLS 连接独有,但不一定为 HTTPS)是根据 TLS SNI 字段内的主机名进行路由。Haproxy、Nginx、stunnel 和 sniproxy 都支持此功能 - 我曾使用它们在 HTTPS 和 IRC-SSL 之间共享端口。