这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

虚拟主机

Nginx的虚拟主机配置

1 - 虚拟主机概述

Nginx虚拟主机概述

介绍

虚拟主机使用的是特殊的软硬件技术,把一台运行在因特网上的服务器主机分成多台"虚拟"的主机,每台虚拟主机是一个独立的网站,具有独立的域名,具有完整的Intemet服务器功能(WWW、FTP、Email等)。同一台主机上的虚拟主机之间是完全独立的,在网站访问者看来,每一台虚拟主机和一台独立的主机是完全一样。

总结:虚拟主机提供了在同一台服务器、同一个 Nginx 进程上运行多个网站的功能。

支持

Nginx可以配置多种类型的虚拟主机。

基于IP的虚拟主机

Linux操作系统允许添加IP别名。

注:IP别名指在一块物理网卡上绑定多个IP地址。

IP别名能够在使用单一网卡的同一个服务器上运行多个基于IP的虚拟主机。

操作系统设置IP别名非常容易,只须配置系统上的网络接口,让它监听额外的IP地址。在Linux系统上,可以使用标准的网络配置工具(比如ifconfig和route命令)添加IP别名。

基于域名的虚拟主机

基于端口的虚拟主机

2 - 基于域名

实战:基于域名的虚拟主机

前言

默认包含

默认在 /etc/nginx/nginx.conf 配置文件中会有如下配置:

http {
	......
    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

这表明默认情况下 nginx 会自动包含 /etc/nginx/conf.d/*.conf/etc/nginx/sites-enabled/*

启用站点和可用站点

默认情况下,在 /etc/nginx/sites-enabled 下有一个默认站点,这个站点也就是 nginx 安装之后的默认站点:

$ cd /etc/nginx/sites-enabled
$ ls -l
total 0
lrwxrwxrwx 1 root root 34 Oct  6 02:19 default -> /etc/nginx/sites-available/default

打开 /etc/nginx/sites-available/default 可以看到如下内容:

server {
        listen 80 default_server;
        listen [::]:80 default_server;

		root /var/www/html;
        index index.html index.htm index.nginx-debian.html;

        server_name _;
        location / {
                try_files $uri $uri/ =404;
        }

按照这个文档的建议,最好是在 /etc/nginx/sites-available/ 下建立站点的配置文件,这些站点就是所谓的"可用站点"。然后在 link 到 /etc/nginx/sites-enabled 下开启站点,这些开启的站点就是所谓"启用站点"。

通过建立链接来控制可用站点的启用。

实战

创建虚拟主机 basiccloud.net

目标: http://basiccloud.nethttp://www.basiccloud.net 应该都指向同一个虚拟主机。

/etc/nginx/sites-available/ 下新建 basiccloud.net 文件,内容如下:

server {
       listen 80;

       server_name basiccloud.net www.basiccloud.net;

       root /var/www/basiccloud.net;
       index index.html;
}

然后建立 /var/www/basiccloud.net 目录,准备好站点的html文件。

将 basiccloud.net 站点文件链接到 /etc/nginx/sites-enabled/ 目录:

sudo ln -s /etc/nginx/sites-available/basiccloud.net /etc/nginx/sites-enabled/basiccloud.net

配置完成之后,在重新转载前,先验证一下:

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

验证通过,再重新装载:

sudo nginx -s reload

创建虚拟主机 dolphin.basiccloud.net

目标: http://dolphin.basiccloud.net 应该指向另外一个虚拟主机。

/etc/nginx/sites-available/ 下新建 dolphin.basiccloud.net 文件,内容如下:

server {
       listen 80;

       server_name dolphin.basiccloud.net;

       root /var/www/dolphin.basiccloud.net;
       index index.html;
}

然后建立 /var/www/dolphin.basiccloud.net 目录,准备好站点的html文件。

将 dolphin.basiccloud.net 站点文件链接到 /etc/nginx/sites-enabled/ 目录:

sudo ln -s /etc/nginx/sites-available/dolphin.basiccloud.net /etc/nginx/sites-enabled/dolphin.basiccloud.net