Apache构建虚拟主机

Apache 虚拟主机概述

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

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

构建虚拟主机

安装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                                     
完毕!

在这里插入图片描述

基于域名的虚拟主机

为每个虚拟主机使用不同的域名,但是其对应的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 <VirtualHost *:80>
  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  <Directory "/var/www/html">
  7    Require all granted
  8  </Directory>
  9 </VirtualHost>
 10 <VirtualHost *:80>
 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  <Directory "/var/www/html">
 16    Require all granted
 17  </Directory>
 18 </VirtualHost>

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

添加虚拟主机主页

[root@4CentOS /]# cd /var/www/html/
[root@4CentOS html]# ls
[root@4CentOS html]# mkdir ora nge
[root@4CentOS html]# echo "<h1>This is Ora index</h1>" > ora/index.html
[root@4CentOS html]# echo "<h1>This is Nge index</h1>" > 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

在这里插入图片描述在这里插入图片描述

基于端口的虚拟主机

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

在上面的基础下进行修改

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

[root@4CentOS /]# vim /etc/httpd/conf/fenji/vhost.conf 
……省略部分……
<VirtualHost *:8080>
 DocumentRoot "/var/www/html/nge"
 ServerName www.nge.com
 ErrorLog "logs/www.nge.com.error_log"
 CustomLog "logs/www.nge.com.error_log" common
 <Directory "/var/www/html">
   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  

在这里插入图片描述

基于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 
<VirtualHost 20.0.0.4:80>     ## * 改为 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
 <Directory "/var/www/html">
   Require all granted
 </Directory>
</VirtualHost>
<VirtualHost 20.0.0.41:80>    ## * 改为 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
 <Directory "/var/www/html">
   Require all granted
 </Directory>
</VirtualHost>

修改 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  

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值