虚拟主机是指在一台物理主机服务器上划分出多个磁盘空间,每个磁盘空间都是一个虚拟主机,每台虚拟主机都可以对外提供 Web 服务,并且互不干扰。在外界看来,虚拟主机就是一台独立的服务器主机,这意味着用户能够利用虚拟主机把多个不同域名的网站部署在同一台服务器上,而不必再为简历一个网站单独购买一台服务器,既解决了维护服务器技术的难题,同时又极大地节省了服务器硬件成本和相关的维护费用。

配置虚拟主机可以基于端口号、基于 IP 和基于域名。

# 基于端口号配置虚拟主机

基于端口号来配置虚拟主机,算是 Nginx 中最简单的一种方式了。原理就是 Nginx 监听多个端口,根据不同的端口号,来区分不同的网站。

我们可以直接配置在主文件里etc/nginx/nginx.conf文件里, 也可以配置在子配置文件里etc/nginx/conf.d/default.conf。我这里为了配置方便,就配置在子文件里了。当然你也可以再新建一个文件,只要在 conf.d 文件夹下就可以了。

修改配置文件中的 server 选项,这时候就会有两个 server。

server{
        listen 8001;
        server_name localhost;
        root /usr/share/nginx/html/html8001;
        index index.html;
}

编在usr/share/nginx/html/html8001/目录下的 index.html 文件并查看结果。

<h1>welcome port 8001</h1>

最后在浏览器中分别访问地址和带端口的地址。看到的结果是不同的。

然后我们就可以在浏览器中访问http://112.74.164.244:8001

# 基于 IP 的虚拟主机

基于 IP 和基于端口的配置几乎一样,只是把server_name选项,配置成 IP 就可以了。

比如上面的配置,我们可以修改为:

server{
        listen 80;
        server_name 112.74.164.244;
        root /usr/share/nginx/html/html8001;
        index index.html;
}

这种演示需要多个 IP 的支持