1 - 虚拟主机概述
介绍
虚拟主机使用的是特殊的软硬件技术,把一台运行在因特网上的服务器主机分成多台"虚拟"的主机,每台虚拟主机是一个独立的网站,具有独立的域名,具有完整的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.net 和 http://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