(一)配置基于IP的虚拟主机
Linux操作系统准许添加IP别名,即可以在一块物理网卡上绑定多个IP地址。这样就能够在使用单一网卡的同一服务器上运行多个基于IP的虚拟主机。设置IP别名也非常简单,只需配置系统上的网卡接口,让它监听额外的IP地址。在Linux系统上可以使用标准的网络配置工具(比如ifconfig和route命令)添加IP别名。使用ifconfig命令查看该服务器的IP地址。
本地回环代表设备的虚拟接口,所以默认被看作是永远不会宕掉的接口,它的主要作用有两个:一是测试本机的网络配置,能PING通127.0.0.1说明本机的网卡和IP协议安装都没有问题;二是某些SERVER/CLIENT的应用程序在运行时须调用服务器上的资源,一般要指定SERVER的IP地址,但当该程序要在同一台机器上运行且没有别的SERVER时,就可以把SERVER的资源装在本机上,SERVER的IP地址设为127.0.0.1也同样可以运行。
如果要在eth0网卡设备上添加一个IP别名192.168.1.223可以通过ifconfig和route命令来进行:
1
|
ifconfig
eth0:0 192.168.1.223 broadcast 192.168.1.255 netmask 255.255.255.0 up
|
或者
1
|
route add -host 192.168.1.223 dev eth0:0
|
eth0:0表示eth0网卡的第1个虚拟ip,当然也可以开第二个第三个,依次为eth0:1,eth0:2
broadcast后面跟的是广播地址
netmask后面跟的是子网掩码
up表示激活
dev后面表示的设备名
如果上面指令不成功,看看是不是权限问题,切换到root下试试
通过ifconfig和route配置的IP别名在服务器重启后会消失,可以将这两条ifconfigt 和 route 命令添加到/etc/rc.local文件中,让系统开机时自动运行
/sbin/ifconfig eth0:0 192.168.1.223 broadcast 192.168.1.255 netmask 255.255.255.0 up
或者
/sbin/route add -host 192.168.1.223 dev eth0:0
为什么是/sbin/ifconfig。因为这些命令的可执行文件在/sbin目录下,可以用whereis命令查看。
清除虚拟IP可用以下命令:
1
|
ifconfig
eth0:x down
|
x表示虚拟网络的接口。
或者
1
|
ip addr del v_ip dev eth0
|
v_ip表示所创建的虚拟IP
建设已经创建了两个虚拟ip,分别为192.168.8.16,192.168.8.18,下面看看如何配置这两个虚拟IP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
http {
include mime.types;
default_type application
/octet-stream
;
keepalive_timeout 65;
access_log log
/server1
.access.log combined;
server {
listen 192.168.8.16:80;
#监听的IP和端口
server_name 192.168.8.16;
#主机名称
location / {
index index.html index.htm;
root
/data0/hrdocs/server1
;
}
}
server {
listen 192.168.8.18:80;
server_name 192.168.8.18;
location / {
index index.html index.htm;
root
/data0/hrdocs/server1
;
}
}
|
一个Server{....} 就是一个虚拟主机,如果本配置多个虚拟主机,建立多段server{}配置即可非常方便,监听的IP和端口,也可以不写IP地址,只写端口,把它配置成“listen 80”,则表示监听该服务器上所有IP的80端口可通过server_name区分不同的虚拟主机
(二)基于域名的虚拟主机
基于域名的虚拟主机是最常见的一种虚拟主机。只需配置你的DNS服务器,将每个主机名映射到正确的lP地址,然后配置Nginx服务器,令其识别不同的主机名就可以了。这种虚拟主机技术,使很多虚拟主机可以共享同一个lP地址,有效解决了lP地址不足的问题。所以,如果没有特殊要求使你必须用一个基于lP的虚拟主机,最好还是使用基于域名的虚拟主机。
我们可以通过编辑/etc/hosts加入虚拟域名以便解析,来测试一下。在hosts文件中加入
127.0.0.2 www.test.com
如下图:
然后保存退出,执行如下命令,重启该文件的内容
1
|
source
hosts
|
然后ping命令做一下小测试,看127.0.0.2通不通
从结果上来看,ping 127.0.0.2 和www.test.com 都是通的。接下来配置Nginx。配置如下:
1
2
3
4
5
6
7
8
|
server {
listen 80;
server_name www.
test
.com;
location / {
root
/home/liulonghua/
下载
/conFusion
;
index index.html;
#当然如果你有更好的模板HTML文件,也可以换的,改下root路径就行
}
}
|
然后保存退出,用nginx -t 测试配置是否有误,无误的话执行下面命令重启Nginx
1
|
service nginx restart
|
然后打开浏览器,输入网站www.test.com。下图是我的测试结果
这里只是举了一个简单的例子,实际生产肯定比这个要复杂。
(三)基于端口的虚拟主机配置
使用端口来区分,浏览器使用域名或ip地址:端口号
看下面的配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
server{
listen 8080;
server_name www.
test
.com;
location / {
root
/home/liulonghua/
下载
/conFusion
;
index index.html;
}
}
server{
listen 9090;
server_name 127.0.0.1;
location / {
root
/usr/share/nginx/html
;
index index.html;
}
}
|
这个时候通过浏览器访问www.test.com或者127.0.0.1网页是打不开的,必须要加上端口后才行,有兴趣的可以自己动手试下。