0

    Tomcat 里的「Matrix」 - 虚拟主机介绍

    2023.05.01 | admin | 149次围观

    最近几年 Docker 火热,在此之前,有 VMVare、VBox之类的可以安装虚拟镜像的软件,「虚拟机」的概念并不陌生。

    比如 Docker 等容器管理,能将一台物理机的资源虚拟化,使用起来和多台机器也没太大差别。

    VMVare、VBox 这种,可以在电脑上安装另一个「镜像」,仿佛多了操作系统。

    其实,在 Web Server的设计上,也有类似的概念。 Apache、Nginx 等,都可以配置多虚拟主机。对于 Web Container,也有对应的 Server的能力,所以容器设计中,也是存在多虚拟主机的。像在 Tomcat 中, 虚拟主机的组件是 Host,是很重要的一个组件。

    通过 Host,我们可以配置区别与其他主机的 AccessLog,设置不同的DefaultContext,甚至可以绑定不同的 Connector。 而且每个 Host 可以设置不同的 name, 通过这个 name, 就能将咱们的域名绑定上去了。

    Tomcat 里的「Matrix」 - 虚拟主机介绍

    如果是本地测试,设置一个随意写的域名网站用虚拟主机可以吗,只需要在操作系统的 hosts 文件中进行指定即可。

    不同的虚拟主机之间,彼此互不影响。自己搭过网站的朋友可能了解。在这几年云服务器流行之前,几年前,我们可以通过「买空间」的方式,来搭网站。比如要建个 wordpress 的博客站点,那一般会有几百兆内存、配个MySQL,硬盘允许多大空间,再给个FTP做为网站根目录。这个所谓的PHP空间,其实也就是个「虚拟主机」,把一台物理电脑上的资源,划分给多个人用。所以当年如果你的网站想要接广告联盟,如果这个空间所属物理机IP被处罚过,那基本就没戏了。

    回到 Tomcat 的虚拟主机。我们之前的文章写过在 Tomcat 里,多个应用一般的部署方式建议(),以及应用之间的类隔离与共享()既然应该已经可以分开部署了,为什么要设计虚拟主机呢?这里除了像上面「PHP空间」那样,资源共用外,还可以进行不同的 Connector 绑定。 我们知道, Connector 是 Tomcat 连接物理世界的桥梁,那如果我们的虚拟主机上部署的是「管理应用」,即对于 Tomcat 服务器进行应用的启、停,进行监控等,类似于 Manager 应用,我们想要做端口的隔离,或者想要对不同的应用设置不同的安全级别,比如对于管理应用,我们要进行HTTPS 访问网站用虚拟主机可以吗,对于普通应用,只要HTTP就可以,那两种不同的 Connector 就可以绑定到不同的主机上。

    另外,如果我们的管理应用和普通应用部署在一起,共用同一个Connector,那管理应用在修改 Connector 的属性时,比如我们把端口号从8000 改成了 9000 的时候, Connector 组件需要重启才能生效,这个时候,我们的管理应用会不可用。隔离的好处,是管理应用对于其他容器组件的变更,应用自己使用不受影响。

    不少朋友应该都看过电影「骇客帝国」,一定还记得影片中的 Matrix 。感觉上,这些不同的虚拟主机,和 Matrix 类似,在每个 Host 中, AccessLog, Valve , Listener 这些组件都是相互隔离,彼此之间老死不相往来。

    通过这种不同的「Matrix」,我们就能进行不同的定制化配置了。

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论