1、虚拟主机概念html
虚拟主机是在网络服务器上划分出必定的磁盘空间供用户放置站点、应用组件等,提供必要的站点功能、数据存放和传输功能。所谓虚拟主机,也叫“网站空间”, 就是把一台运行在互联网上的服务器划分红多个“虚拟”的服务器,每个虚拟主机都具备独立的域名和完整的Internet服务器(支持WWW、FTP、 E-mail等)功能,从用户角度来看,每台虚拟主机和一台独立的服务器彻底相同,在IP地址日益紧张的今天,基于域名的虚拟主机要比基于IP的虚拟主机 使用的更加普遍。linux
2、系统环境nginx
系统平台:RHEL 5.4浏览器
Nginx版本:nginx-1.0.15服务器
3、配置基于IP的虚拟主机网络
Linux、FreeBSD操做系统都容许添加IP别名。IP别名即:能够在一块物理网卡上绑定多个IP地址。这样就可以在使用单一网卡的同一个服务器上运行多个基于IP的虚拟主机。设置IP别名也很是容易,只须配置系统上的网络接口,让它监听额外的lP地址。在Linux系统上,可使用标准的网络配置工具(好比ifconfig和route命令)添加IP别名。app
1)、先用ifconfig命令查看该服务器的lP地址。tcp
[root@linux nginx]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:99:E4:21
inet addr:10.0.0.133 Bcast:10.255.255.255 Mask:255.0.0.0
inet6 addr: fe80::a00:27ff:fe99:e421/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7324 errors:0 dropped:0 overruns:0 frame:0
TX packets:2051 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:719461 (702.5 KiB) TX bytes:308638 (301.4 KiB)工具
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:765 errors:0 dropped:0 overruns:0 frame:0
TX packets:765 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:48577 (47.4 KiB) TX bytes:48577 (47.4 KiB)
[root@linux nginx]#
2)、在eth0网卡设备上添加两个lP别名10.0.0.189和10.0.0.190,经过ifconfig和route命令来进行:oop
[root@linux nginx]# ifconfig eth0:1 10.0.0.189 broadcast 10.255.255.255 netmask 255.0.0.0 up
[root@linux nginx]# route add -host 10.0.0.189 dev eth0:1
[root@linux nginx]# ifconfig eth0:2 10.0.0.190 broadcast 10.255.255.255 netmask 255.0.0.0 up
[root@linux nginx]# route add -host 10.0.0.190 dev eth0:2
3)、再执行ifconfig命令,就能够看到eth0网卡设备上绑定了两个lP别名
[root@linux nginx]# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:99:E4:21
inet addr:10.0.0.133 Bcast:10.255.255.255 Mask:255.0.0.0
inet6 addr: fe80::a00:27ff:fe99:e421/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:7490 errors:0 dropped:0 overruns:0 frame:0
TX packets:2151 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:735277 (718.0 KiB) TX bytes:342506 (334.4 KiB)
eth0:1 Link encap:Ethernet HWaddr 08:00:27:99:E4:21
inet addr:10.0.0.189 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth0:2 Link encap:Ethernet HWaddr 08:00:27:99:E4:21
inet addr:10.0.0.190 Bcast:10.255.255.255 Mask:255.0.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:771 errors:0 dropped:0 overruns:0 frame:0
TX packets:771 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:48897 (47.7 KiB) TX bytes:48897 (47.7 KiB)
[root@linux nginx]#
4)、 从另一台服务器Ping 10.0.0.189和10.0.0.190两个IP,若是可以Ping通,则证实配置无误。可是,经过ifconfig和route配置的IP别名在服 务器重启后会消失,不过能够将这两条ifconng和route命令添加到/etc/rc.local文件中,让系统开机时自动运行,如下是相关命令:
vi /etc/rc.local
在文件末尾增长如下内容,而后保存便可
ifconfig eth0:1 10.0.0.189 broadcast 10.255.255.255 netmask 255.0.0.0 up
route add -host 10.0.0.189 dev eth0:1
ifconfig eth0:2 10.0.0.190 broadcast 10.255.255.255 netmask 255.0.0.0 up
route add -host 10.0.0.190 dev eth0:2
5)、下面开始配置基于IP的虚拟主机,在Nginx配置文件(nginx.conf)中,分别对10.0.0.13三、10.0.0.18九、10.0.0.190三个IP配置三个纯静态HTML支持的虚拟主机。
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
#第一个虚拟主机
server {
listen 10.0.0.133:80; #监听的IP和端口
server_name 10.0.0.133; #主机名称
access_log logs/host1.access.log main; #访问日志文件存放路径
location /
{
root /usr/local/nginx/html/host1; #HTML网页文件存放的目录
index index.html index.htm; #默认首页文件,顺序从左到右,若是找不到index.html文件,则查找index.htm文件做为首页文件
}
}
#第二个虚拟主机
server {
listen 10.0.0.189:80;
server_name 10.0.0.189;
access_log logs/host2.access.log main;
location /
{
root /usr/local/nginx/html/host2;
index index.html index.htm;
}
}
#第三个虚拟主机
server {
listen 10.0.0.190:80;
server_name 10.0.0.190;
access_log logs/host3.access.log main;
location /
{
root /usr/local/nginx/html/host3;
index index.html index.htm;
}
}
从上面的配置文件中能够看出,一段server{……}就是一个虚拟主机,若是要配置多个虚拟主机,创建多段server{……}配置便可,很是方便。监听的IP和端口也能够不写IP地址,只写端口,把它配置成"listen 80",则表示监听该服务器上全部IP的80端口,可经过server_name区分不一样 的虚拟主机。
4、测试
1)、用脚本重启nginx。
[root@linux conf]# service nginx restart
2)、在/usr/local/nginx/html/下分别创建三个目录host1,host2,host3。分别在三个目录中放一个index.html 文件,分别写上本身的IP地址;
3)、用浏览器访问相应IP地址。