Apache构建虚拟主机

Apache 虚拟主机概述

访问web服务,本质上看(从协议上)是访问某个IP的主机上的某个端口(默认是80),通常需要通过访问不同的域名或者端口,实现对不同网站的访问(具体到服务器里就是不同目录),这个时候就需要设置网站空间。通常分为3种:基于域名、基于端口、基于IP以及它们的混合。

简单来说,Apache虚拟主机就是在一个Apache服务器上配置多个虚拟空间,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录。
使用httpd可以非常方便的构建虚拟主机服务器,只需要运行一个httpd服务就能够同时支撑大量的web站点

文章目录

  • Apache 虚拟主机概述
  • 构建虚拟主机
    • 安装HTTP DNS
    • 基于域名的虚拟主机
      • 编辑主配置文件
      • 编辑区域配置文件
      • 编辑区域数据文件
      • 验证DNS解析
      • 创建HTTP虚拟主机配置
      • 编辑虚拟主机主页,添加虚拟主机站点
      • 开启 http 服务,进行验证
    • 基于端口的虚拟主机
      • 在上面的基础下进行修改
      • 进行验证
    • 基于IP的虚拟主机
      • 增加一块网卡,配置其IP
      • 修改虚拟主机配置文件
      • 修改 http 主配置文件
      • 重启服务进行验证

构建虚拟主机

安装HTTP DNS

[root@4CentOS ~]# yum -y install bind
……省略部分……
已安装:
  bind.x86_64 32:9.11.4-16.P2.el7_8.6                               
作为依赖被升级:
  bind-libs.x86_64 32:9.11.4-16.P2.el7_8.6                          
  bind-libs-lite.x86_64 32:9.11.4-16.P2.el7_8.6                     
  bind-license.noarch 32:9.11.4-16.P2.el7_8.6                       
  bind-utils.x86_64 32:9.11.4-16.P2.el7_8.6                         
完毕!

[root@4CentOS ~]# yum -y install httpd
……省略部分……
已安装:
  httpd.x86_64 0:2.4.6-93.el7.centos                                
作为依赖被安装:
  httpd-tools.x86_64 0:2.4.6-93.el7.centos                          
  mailcap.noarch 0:2.1.41-2.el7                                     
完毕!

Apache构建虚拟主机_第1张图片

基于域名的虚拟主机

为每个虚拟主机使用不同的域名,但是其对应的IP地址使相同的
域名不同–IP相同,端口相同
基于域名是最为普遍的虚拟web主机类型

编辑主配置文件

[root@4CentOS ~]# vim /etc/named.conf 
options {
        listen-on port 53 { any; };             ##监听端口改为 any
……省略部分……
        allow-query     { any; };                ##也改为any

编辑区域配置文件

[root@4CentOS ~]# vim /etc/named.rfc1912.zones
…复制文件内的模板,粘贴进行编辑……
 12 zone "ora.com" IN {
 13         type master;
 14         file "ora.com.zone";
 15         allow-update { none; };
 16 };
 17 zone "nge.com" IN {
 18         type master;
 19         file "nge.com.zone";
 20         allow-update { none; };
 21 };

编辑区域数据文件

[root@4CentOS ~]# cd /var/named/
[root@4CentOS named]# ls
data     named.ca     named.localhost  slaves
dynamic  named.empty  named.loopback
[root@4CentOS named]# cp -p named.localhost ora.com.zone  ##这边需要 -p 保留原文件的权限
[root@4CentOS named]# vim ora.com.zone    ##与区域配置文件里的文件名相呼应
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
www  IN A       20.0.0.4     ##删除本来的自身环回 IP,增加这行,IP 为自身IP

[root@4CentOS named]# cp -p ora.com.zone nge.com.zone
##这行复制之后不需要修改,因为解析的 IP 为一样的

验证DNS解析

[root@4CentOS named]# systemctl start named
[root@4CentOS named]# echo "nemeserver 20.0.0.4" > /etc/resolv.conf  ##指向自己
[root@4CentOS named]# nslookup www.ora.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Name:	www.ora.com
Address: 20.0.0.4

[root@4CentOS named]# nslookup www.nge.com
Server:		127.0.0.1
Address:	127.0.0.1#53

Name:	www.nge.com
Address: 20.0.0.4

创建HTTP虚拟主机配置

[root@4CentOS named]# cd /
[root@4CentOS /]# cd /etc/httpd/conf
[root@4CentOS conf]# ls
httpd.conf  magic
[root@4CentOS conf]# mkdir fenji
[root@4CentOS conf]# cd fenji/
[root@4CentOS fenji]# vim vhost.conf
……下面1-18都为手敲,没有模板……
  1 
  2  DocumentRoot "/var/www/html/ora"
  3  ServerName www.ora.com
  4  Errorlog "logs/www.ora.com.error_log"
  5  Customlog "logs/www.ora.com.error_log" common
  6  
  7    Require all granted
  8  
  9 
 10 
 11  DocumentRoot "/var/www/html/nge"
 12  ServerName www.nge.com
 13  Errorlog "logs/www.nge.com.error_log"
 14  Customlog "logs/www.nge.com.error_log" common
 15  
 16    Require all granted
 17  
 18 

编辑虚拟主机主页,添加虚拟主机站点

添加虚拟主机主页

[root@4CentOS /]# cd /var/www/html/
[root@4CentOS html]# ls
[root@4CentOS html]# mkdir ora nge
[root@4CentOS html]# echo "

This is Ora index

" > ora/index.html [root@4CentOS html]# echo "

This is Nge index

" > nge/index.html [root@4CentOS html]# tree /var/www/html/ ##使用 tree 命令查看文件树 /var/www/html/ ├── nge │ └── index.html └── ora └── index.html 2 directories, 2 files

添加虚拟主机站点

[root@4CentOS /]# vim /etc/httpd/conf/httpd.conf 
……在最后一行添加……
Include conf/fenji/vhost.conf

开启 http 服务,进行验证

[root@4CentOS fenji]# systemctl start httpd
[root@4CentOS fenji]# setenforce 0
[root@4CentOS fenji]# iptables -F

Apache构建虚拟主机_第2张图片Apache构建虚拟主机_第3张图片

基于端口的虚拟主机

这种方式并不使用域名,IP地址来区分不同的站点内容,而是使用不同的TCP端口号
因此用户在浏览不同的虚拟站点时需要同时制定端口号才能访问
IP相同,端口不同

在上面的基础下进行修改

修改虚拟主机配置,在第二个虚拟主机的端口部分改为 8080,改为别的也行

[root@4CentOS /]# vim /etc/httpd/conf/fenji/vhost.conf 
……省略部分……

 DocumentRoot "/var/www/html/nge"
 ServerName www.nge.com
 Errorlog "logs/www.nge.com.error_log"
 Customlog "logs/www.nge.com.error_log" common
 
   Require all granted
……省略部分……

[root@4CentOS /]# vim /etc/httpd/conf/httpd.conf
Listen 20.0.0.4:80        ##监听地址改为本机 IP,80端口
Listen 20.0.0.4:8080    ##监听地址改为本机 IP,8080端口·
#Listen 80   ##关闭 IPv6 监听

[root@4CentOS /]# systemctl reload httpd

进行验证

[root@4CentOS /]# systemctl restart httpd
[root@4CentOS /]# netstat -natp |grep httpd
tcp        0      0 20.0.0.4:8080           0.0.0.0:*               LISTEN      68168/httpd         
tcp        0      0 20.0.0.4:80             0.0.0.0:*               LISTEN      68168/httpd  

Apache构建虚拟主机_第4张图片

基于IP的虚拟主机

为每个虚拟主机使用不同的域名,且各自对应的IP地址也不相同
这种方式需要为服务器配备多个网络接口,因此应用不是很广泛
IP不同,端口相同

增加一块网卡,配置其IP

在上面的配置下进行修改

[root@4CentOS /]# cd /etc/sysconfig/network-scripts/
[root@4CentOS network-scripts]# cp ifcfg-ens33 ifcfg-ens34
[root@4CentOS network-scripts]# vim ifcfg-ens34
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens34"
DEVICE="ens34"
ONBOOT="yes"
IPADDR="20.0.0.41"
PREFIX="24"
GATEWAY="20.0.0.2"
DNS1="114.114.114.114"
[root@4CentOS network-scripts]# systemctl restart network

修改虚拟主机配置文件

[root@4CentOS /]# cd /etc/httpd/conf/
[root@4CentOS conf]# cd fenji/
[root@4CentOS fenji]# vim vhost.conf 
     ## * 改为 ip 地址
 DocumentRoot "/var/www/html/ora"
 ServerName www.ora.com
 Errorlog "logs/www.ora.com.error_log"
 Customlog "logs/www.ora.com.error_log" common
 
   Require all granted
 

    ## * 改为 ip 地址
 DocumentRoot "/var/www/html/nge"
 ServerName www.nge.com
 Errorlog "logs/www.nge.com.error_log"
 Customlog "logs/www.nge.com.error_log" common
 
   Require all granted
 

修改 http 主配置文件

[root@4CentOS conf]# vim httpd.conf 
#
Listen 20.0.0.4:80
Listen 20.0.0.41:80

重启服务进行验证

[root@4CentOS conf]# systemctl start httpd
[root@4CentOS conf]# netstat -natp |grep httpd
tcp        0      0 20.0.0.41:80            0.0.0.0:*               LISTEN      69178/httpd         
tcp        0      0 20.0.0.4:80             0.0.0.0:*               LISTEN      69178/httpd  

Apache构建虚拟主机_第5张图片
Apache构建虚拟主机_第6张图片

你可能感兴趣的:(网页网站服务)