虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响的。
虚拟主机技术是互联网服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应用于HTTP(Hypertext Transfer Protocol,超文本传输协议)服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。
Nginx支持三种类型的虚拟主机配置
-
基于IP的虚拟主机
-
基于端口的虚拟主机
-
基于域名的虚拟主机
需求
一台Linux服务器绑定两个ip:192.168.20.101、192.168.20.99
访问不同的ip请求不同的html目录,即:
访问http://192.168.20.101将访问“html101”目录下的html网页
访问http://192.168.20.99将访问“html99”目录下的html网页
Linux绑定多IP
Linux操作系统允许绑定多IP。是在一块物理网卡上可以绑定多个lP地址。这样就能够在使用单一网卡的同一个服务器上运行多个基于IP的虚拟主机。但是在绑定多IP时需要将动态的IP分配方式修改为静态的指定IP。
将动态IP修改为静态IP
[root@node1 ~]# cd /etc/sysconfig/network-scripts [root@node1 network-scripts]# ls ifcfg-ens33 [root@node1 network-scripts]# vim ifcfg-ens33 BOOTPROTO="static" IPADDR0=192.168.20.101 IPADDR1=192.168.20.99 [root@node1 network-scripts]# service network restart # centos6、7重启网卡 [root@node1 ~]# systemctl restart network #centos7重启网卡 [root@node0 network-scripts]#reboot #各种发行版都是可以的 #CentOS8重启网卡 nmcli c reload ens33
修改Nginx的配置文件完成基于IP的虚拟主机配置**
Nginx的配置文件nginx.conf
如上述配置文件所示,主要由6个部分组成:
main:用于进行nginx全局信息的配置
events:用于nginx工作模式的配置
http:用于进行http协议信息的一些配置
server:用于进行服务器访问信息的配置
location:用于进行访问路由的配置
upstream:用于进行负载均衡的配置
修改配置nginx.conf
[root@node1 network-scripts]# vim /usr/local/nginx/conf/nginx.conf
#一个Server就是一个虚拟主机
server {
listen 80;
#为虚拟机指定IP或者是域名
server_name 192.168.20.101;
#主要配置路由访问信息
location / {
#用于指定访问根目录时,访问虚拟主机的web目录
root html101;
#在不指定访问具体资源时,默认的展示资源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#一个Server就是一个虚拟主机
server {
listen 80;
#为虚拟机指定IP或者是域名
server_name 192.168.20.99;
#主要配置路由访问信息
location / {
#用于指定访问根目录时,访问虚拟主机的web目录
root html99;
#在不指定访问具体资源时,默认的展示资源的列表
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
准备需要的目录和html页面:
[root@node1 conf]# cd ../ [root@node1 nginx]# ls conf html logs sbin scgi_temp [root@node1 nginx]# cp -r html/ html101 [root@node1 nginx]# ls conf html html101 logs sbin scgi_temp [root@node1 nginx]# vim html101/index.html ......Welcome to nginx 192.168.20.101!
Thank you for using nginx.


