web服务器关于**虚拟主机功能**

概述

  • 如果每台运行 Linux 系统的服务器上只能运行一个网站,那么人气低、流量小的草根站长就要被迫承担着高昂的服务器租赁费用了,这显然也会造成硬件资源的浪费。在虚拟专用服务器(Virtual Private Sever,VPS)与云计算技术诞生以前,IDC 服务供应商为了能够更充分地利用服务器资源,同时也为了降低购买门槛,于是纷纷启用了虚拟主机功能

  • 利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成多个“虚拟的服务器”。但是,该技术无法实现目前云主机技术的硬件资源隔离

  • nginx务器基于用户请求的不同 IP 地址、主机域名或端口号,实现提供多个网站同时为外部提供访问服务的技术,也就是说用户请求的方式不同,最终获取到的网页内容也各不相同

基于 IP 地址的虚拟主机

原理
  • 如果一台服务器有多个IP地址,而且每个IP地址与服务器上部署的每个网站一一对应,当用户请求的IP地址不同,则会访问到不同网页,且每个网站都有一个独立的IP地址。(常用)

  • 注意:主机必须有多个IP地址

实验
  • 增加多个IP地址,实现基于不同IP地址的虚拟主机功能

  • 第一步:准备工作

# 恢复快照
[root@server ~]# setenforce  0           
​
[root@server ~]# systemctl stop  firewalld
​
[root@server ~]# systemctl disable  firewalld
​
[root@server ~]# yum  install  nginx  -y
​
[root@server ~]# systemctl start  nginx   # 启动httpd
 
[root@server ~]# systemctl enable  nginx  # 设置开机启动
# 给网卡增加2个IP地址
[root@server ~]# nmcli c  modify ens32 +ipv4.addresses 192.168.48.150/24
[root@server ~]# nmcli c  modify ens32 +ipv4.addresses 192.168.48.151/24
[root@server ~]# nmcli c  reload
[root@server ~]# nmcli c  up  ens32  
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
[root@server ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:ad:e9:7a brd ff:ff:ff:ff:ff:ff
    inet 192.168.48.130/24 brd 192.168.48.255 scope global noprefixroute ens32
       valid_lft forever preferred_lft forever
    inet 192.168.48.150/24 brd 192.168.48.255 scope global secondary noprefixroute ens32
       valid_lft forever preferred_lft forever
    inet 192.168.48.151/24 brd 192.168.48.255 scope global secondary noprefixroute ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fead:e97a/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
  • 第二步:新建2个存储网页的目录,写入网页文件

[root@server ~]# mkdir  -p  /www/ip150
[root@server ~]# mkdir  -p  /www/ip151
[root@server ~]# echo  "ip150"  >  /www/ip150/index.html
[root@server ~]# echo  "ip151"  >  /www/ip151/index.html
  • 第三步:修改配置文件,建立基于IP地址的虚拟主机

# 在/etc/nginx/conf.d目录下建立子配置文件实现,更加精简,执行时会被主配置文件加载
​
[root@server ~]# vim  /etc/nginx/conf.d/vshost.conf   # 添加以下内容
server {
        listen       80;
        server_name  192.168.48.150;
        root         /www/ip150;
        }
server {
        listen       80;
        server_name  192.168.48.151;
        root         /www/ip151;
        }
  • 第四步,重启服务,测试

[root@server ~]# nginx   -t  
[root@server ~]# systemctl restart nginx   # 重启服务
[root@server ~]# curl   192.168.48.150     # 测试网页
ip150
[root@server ~]# curl   192.168.48.151
ip151

基于端口号的虚拟主机

原理
  • 基于端口号的虚拟主机功能,可以让用户通过一个IP地址的不同端口号来访问不同的网站

实验
  • 基于不同端口的虚拟主机

  • 第一步:准备工作

# 恢复快照
[root@server ~]# setenforce  0           
​
[root@server ~]# systemctl stop  firewalld
​
[root@server ~]# systemctl disable  firewalld
​
[root@server ~]# yum  install  nginx  -y
​
[root@server ~]# systemctl start  nginx   # 启动httpd
 
[root@server ~]# systemctl enable  nginx  # 设置开机启动
  • 第二步:新建2个存储于网页的目录,使用xftp将网页文件上传

[root@server ~]# mkdir  -p  /www/port{5111,5222}  # 一条语句合并建立目录
[root@server ~]# ls  /www
port5111  port5222
​
# 使用xftp将2个网页文件sxhkt及zy上传到上述目录
  • 第三步:编辑主配置文件

# 可直接在主配置文件中修改
[root@server ~]# vim  /etc/nginx/nginx.conf 
server {
        listen       5111;
        server_name  _;
        root         /www/port5111;
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
    server {
        listen       5222;
        server_name  _;
        root         /www/port5222;
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
  • 第四步:重启服务,测试

[root@server ~]# systemctl restart nginx   # 重启服务
​
# 打开windows的浏览器输入192.168.48.130:5111或者192.168.48.130:5222进行测试

基于域名的虚拟主机

原理
  • 当服务器无法给每个网站都分配一个独立的IP地址时,可以通过用户请求的域名不同实现传输不同的网页数据

域名解析:
  • 功能:域名<==>IP地址

  • 浏览器如何通过域名去查询URL对应的IP(对应服务器地址):

    • 浏览器缓存:浏览器会按照一定的频率缓存DNS记录

    • 操作系统缓存:如果浏览器缓存中找不到需要的DNS记录,那就去操作系统中的hosts文件找。hosts是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联"数据库",当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。

      • windows下的hosts文件路径:C:\Windows\System32\drivers\etc\hosts

      • Linux下的hosts文件路径:/etc/hosts

    • 路由缓存:路由器也有DNS缓存。

    • ISP的DNS服务器:ISP是互联网服务提供商(Internet Service Provider)的简称,ISP有专门的DNS服务器应对DNS查询请求

    • 根服务器:ISP的DNS服务器还找不到的话,它就会向根服务器发出请求,进行查询(DNS服务器先问根域名服务器.com域名服务器的IP地址,然后再问.com域名服务器,依次类推)

实验
  • 使用2个域名建立虚拟主机网站

  • 第一步:准备工作

# 恢复快照
[root@server ~]# setenforce  0           
​
[root@server ~]# systemctl stop  firewalld
​
[root@server ~]# systemctl disable  firewalld
​
[root@server ~]# yum  install  nginx  -y
​
[root@server ~]# systemctl start  nginx   # 启动httpd
 
[root@server ~]# systemctl enable  nginx  # 设置开机启动
  • 第二步:新建2个存储网页文件的目录,使用xftp将网站文件上传

[root@server ~]# mkdir  -p  /www/zy
[root@server ~]# mkdir  -p  /www/sxhkt
  • 第三步:手动配置IP地址与域名的映射关系

# Linux端
[root@server ~]# vim  /etc/hosts
# 添加如下内容:
192.168.48.130  www.zy.com
192.168.48.130  www.sxhkt.com
​
# windows端,打开:
C:\Windows\System32\drivers\etc\hosts文件,添加如下内容:
192.168.48.130  www.zy.com
192.168.48.130  www.sxhkt.com
  • 第四步:编辑主配置文件

[root@server ~]# vim  /etc/nginx/nginx.conf 
# 定位第1行,添加:
​
server {
        listen       80;
        server_name  www.zy.com;   # 重点,需要写域名
        root         /www/zy;
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
​
    server {
        listen       80;
        server_name  www.sxhkt.com;
        root         /www/sxhkt;
        error_page 404 /404.html;
            location = /40x.html {
        }
        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
  • 第五步:重启服务,测试

[root@server ~]# systemctl restart nginx   # 重启服务
​
# windows端打开浏览器输入域名测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值