![多个 DNS 条目指向服务器的不同“部分”](https://linux22.com/image/1588565/%E5%A4%9A%E4%B8%AA%20DNS%20%E6%9D%A1%E7%9B%AE%E6%8C%87%E5%90%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E4%B8%8D%E5%90%8C%E2%80%9C%E9%83%A8%E5%88%86%E2%80%9D.png)
我想要两个子域名:
a.myawesomewebsite.com
b.myawesomewebsite.com
指向我拥有的 VPS 的不同“部分”。一个“部分”是该服务器上运行的 HTTP 服务器,另一个是通向我的家庭服务器的 SSH 隧道,所有较大且较少使用的文件都存储在该服务器上。有办法做到这一点吗?
注意:我无法将其直接指向我的家庭服务器,因为我的 ISP 将所有互联网流量 NAT 到伦敦的一台服务器,所以显然没有端口转发,我必须使用 SSH 隧道。
提前致谢。
答案1
我必须假设你问的是两个网站(即,主 SSH 隧道通向另一个 HTTP 服务器),因为这样问题最有意义。
因此,如果您希望http://a.example.com
通过http://b.example.com
同一台服务器连接到不同的网站,您有两种选择:
将您的 Web 服务器配置为“反向代理”。nginx 和 Apache 都具备此功能,并且支持按域和按 URL 配置 - 因此,您可以拥有一个 VirtualHost,它只在域 A 上为您的普通网站提供服务,另一个 VirtualHost 将代理请求到您的 SSH 隧道主机。
(这与在同一个 Web 服务器上拥有两个“普通”域名相同,唯一的区别是附加
ProxyPass
参数。)如果您当前的 Web 服务器不支持反向代理功能,那么您可以在其前面安装一个反向代理(可以是相同的 Apache/nginx,也可以是专用的 haproxy 等)。
为您的服务器购买第二个 IPv4 地址,然后配置 Web 服务器以监听(“绑定到”)其中一个地址上的连接,并将 SSH 隧道绑定到另一个地址。将每个 DNS 域指向相应的 IPv4 地址。