我需要在同一台机器上为大量网站提供服务。我需要能够动态添加和删除网站。
从内部来看,Web 服务器需要认为请求是来自虚拟主机 (vhost)。
是否可以在前端使用 nginx 来处理以下形式的请求:example.com/vhost1/some/path 并将其重写为:vhost1.example.com/some/path
我可以在不为 vhost1.example.com 配置 DNS 的情况下做到这一点吗?
我是否需要将 vhost1.example.com 添加到机器上的主机名中?
谢谢
答案1
如果要测试客户端与虚拟主机 project1.example.com 的连接,请将其添加到客户端上的 /etc/hosts 文件(或 Windows 上的 equiv):
10.87.42.22 project1.example.com
然后尝试在浏览器中加载该 URL。
答案2
您可以添加通配符域名 *.example.com(这在 BIND 中是可能的,不知道其他 DNS 服务器)并设置 nginx vhosts project1.example.com、project2.example.com...这样您就不必为每个添加的子域名更新 DNS!
答案3
我不太清楚你想要实现什么。如果只是内部重新映射,你应该能够使用一些与 DNS 无关的方法来更改它。你可能需要更改 DNS 记录的唯一原因是,这涉及将客户端从示例.com到vhost.example.com反而。
答案4
我在内部网络上运行 djbDNS(以前也为更多可公开访问的网站运行过),使用给定的 .TLD 和通配符 - 因此*.localtest
会解析为给定的 IP,Apache 或 thttpd 将获取该 IP(使用 Apache 的VirtualDocumentRoot
)。您也可以使用 nginx 执行相同操作(基于 为网站提供服务HTTP_HOST
)。