事情是这样的。
我有多个虚拟主机。每个虚拟主机都是一个单独的域。每个域用于单独的应用程序。假设我有以下虚拟主机:
http://.abc.com http://.def.com http://foo.com
然后我有一个单独的应用程序,它是 foo.com 应用程序的 RESTful HTTP api。
我想要实现的本质上是 *.abc.com 和 *.def.com 到 api.foo.com 之间的反向通道通信。这样 *.abc.com、*.def.com 和 foo.com 就可以公开访问(我已经设置好了)。但只有从同一台服务器请求时才能访问 api.foo.com。
我的标准是:
- 任何试图浏览 api.foo.com 的人都会收到 404 错误(但不会被拒绝访问)
- 对 api.foo.com 的访问仅限于 IP 或 IP 范围
我通过以下方式实现了这个目标:
- 没有为 api.foo.com 设置 DNS 记录,因此任何尝试访问它的人都会收到 404。
为 127.0.0.1:80 创建基于 IP 的虚拟主机,并将以下规则添加到 /etc/hosts
127.0.0.1 api.foo.com
这完全符合预期。但这是实现私有虚拟主机的正确方法吗?
答案1
对我来说这听起来是个不错的解决方案。如果您的网站发展壮大,您甚至可以将其扩展到多台服务器。
一个小提示:客户端不会收到 404 错误,他们的浏览器会报告他们无法找到主机。404 表示浏览器与服务器通信,但服务器找不到请求的文档。