Apache构建虚拟主机配置(基于域名、基于端口、基于IP)

mark

简介

​ 虚拟Web主机指的是在同一台服务器中运行多个Web站点,其中的每个站点实际并不独立占用整个服务器,因此被称为“虚拟”Web主机。通过虚拟Web主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。

使用httpd服务可以非常方便地构建虚拟主机服务器,只需要运行一个httpd服务就能同事支撑大量的Web站点。

httpd服务支持的虚拟主机类型包括以下三种:

基于域名:为每个虚拟主机使用不同的域名,但是其对应的IP地址是相同的;

基于IP地址:为每个虚拟主机使用不同的域名,其各自对应的IP地址也不相同;

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

这几种虚拟Web主机中,基于域名的虚拟主机是使用最为广泛的;基于IP地址和基于端口的虚拟主机一般只适用于公司内部。

一:虚拟Web主机

  • 在同一台服务器运行多个Web点,其中每一个站点并不独立占用一台真正的计算机

1.1:基于域名主机的虚拟主机实现步骤:

  • 为虚拟主机提供域名解析

  • 首先需要搭建DNS服务以便提供域名解析,搭建DNS服务

1.2:httpd支持的虚拟主机类型

  • 基于域名的虚拟主机

  • 基于IP地址的虚拟主机

  • 基于端口的虚拟主机

二:构建虚拟基于域名的虚拟主机

实验步骤

添加两块网卡

IP分别为
20.0.0.41
20.0.0.50
mark

配置网卡信息

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]# vim ifcfg-ens36
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=staic
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=20.0.0.50
PREFIX=24
GATEWAY=20.0.0.2
DNS1=20.0.0.2

[root@localhost network-scripts]#systemctl start network   #重启网卡

安装Apache跟DNS服务

[root@localhost ~]# yum install bind httpd -y
...省略内容

配置DNS

  • /etc/named.conf ##主配置文件
  • /etc/named.rfc1912.zones ##区配置文件
  • /var/named/named.localhost ##区域数据配置文件

配置dns全局配置文件/etc/named.conf

[root@localhost ~]# vim /etc/named.conf
 11 
 12 options {
    
    
 13         listen-on port 53 {
    
     any; };  ##进来后把监听地址改为any
 14         listen-on-v6 port 53 {
    
     ::1; };
 15         directory       "/var/named";         ##目录
 16         dump-file       "/var/named/data/cache_dump.db";
 17         statistics-file "/var/named/data/named_stats.txt";
 18         memstatistics-file "/var/named/data/named_mem_stats.txt";
 19         recursing-file  "/var/named/data/named.recursing";
 20         secroots-file   "/var/named/data/named.secroots";
 21         allow-query     {
    
     any; };    ##把localhost改为any 任何都可以访问地址

配置区域配置文件

[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "abc.com" IN {
    
    
        type master;
        file "abc.com.zone";
        allow-update {
    
     none; };
};
zone "dba.com" IN {
    
    
        type master;
        file "dba.com.zone";
        allow-update {
    
     none; };
};

配置区域数据文件

[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
benet.com.zone  dynamic       named.ca     named.localhost  slaves
data            kgc.com.zone  named.empty  named.loopback
[root@localhost named]# cp -p named.localhost abc.com.zone
[root@localhost named]# vim abc.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.41                  #添加解析地址

[root@localhost named]# cp -p abc.com.zone dba.com.zone

重启网卡关闭防护功能

[root@localhost named]# setenforce 0
[root@localhost named]# iptables -F
[root@localhost named]# systemctl start named

客户机测试是否生效

mark

mark

创建虚拟主机的配置文件

  • 目录文件在/etc/httpd/conf/extra/,简单设置文件名为vhost.conf
#切换到httpd目录
[root@localhost named]# cd /etc/httpd/
[root@localhost httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run
[root@localhost httpd]# ls conf.d/
autoindex.conf  README  userdir.conf  welcome.conf
[root@localhost httpd]# ll
总用量 0
drwxr-xr-x. 2 root root  37 77 13:35 conf
drwxr-xr-x. 2 root root  82 77 13:35 conf.d
drwxr-xr-x. 2 root root 146 77 13:35 conf.modules.d
lrwxrwxrwx. 1 root root  19 77 13:35 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root  29 77 13:35 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root  10 77 13:35 run -> /run/httpd
#/var/log/httpd是日志文件目录   logs是软连接
#这里注意的是服务没启动是没有文件的
[root@localhost httpd]# systemctl start httpd
[root@localhost httpd]# ls /var/log/httpd/
access_log  access_log-20200802  error_log  error_log-20200802
[root@localhost httpd]# ls logs/
access_log  access_log-20200802  error_log  error_log-20200802

/etc/httpd/conf/extra/vhost.conf文件中

  • 指的是所有的ip地址同过80端口都可以访问
  • DocumentRoot “是web站点目录”
  • ServerName “站点服务域名”
  • Errorlog “指定错误日志路径”
  • Customlog “指定访问日志路径” 后面跟common扩展工具
  • 指定详细配置的目录名,可以发现是web站点目录的父目录
    允许所有用户主机的所有访问权限 //后面由此还会扩展更多的配置属性
[root@localhost httpd]# cd conf
[root@localhost conf]# ls
httpd.conf  magic
[root@localhost conf]# mkdir shuai
[root@localhost conf]# ls
httpd.conf  magic  shuai
[root@localhost shuai]# vim vhost.conf
<VirtualHost *:80>
  DocumentRoot "/var/www/html/abc"
  ServerName www.kgc.com
  ErrorLog "logs/www.abc.com.error_log"
  CustomLog "logs/www.abc.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>

<VirtualHost *:80>
  DocumentRoot "/var/www/html/dba"
  ServerName www.dba.com
  ErrorLog "logs/www.dba.com.error_log"
  CustomLog "logs/www.dba.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>

创建两个web页面的站点

  • 首页文件index.html在/var/www/html的站点目录
[root@localhost shuai]# cd /var/www/html/
[root@localhost html]# ls
index.html
[root@localhost html]# mkdir abc dba
[root@localhost html]# ls
abc  index.html  dba
[root@localhost html]# cd abc/
[root@localhost abc]# vim index.html
<h1>this is abc web</h1>
[root@localhost abc]# cd ../dba/
[root@localhost dba]# vim index.html
<h1>this is dba web</h1>

需要把shuai的路径加入到主配置文件,启动要去读取才能识别

[root@localhost kgc]# cd /etc/httpd/conf
[root@localhost conf]# ls
httpd.conf  magic  shuai
[root@localhost conf]# cd shuai/
[root@localhost shuai]# ls
vhost.conf
[root@localhost shuai]# vim /etc/httpd/conf/httpd.conf

Include conf/shuai/vhost.conf

启动服务,查看端口

[root@localhost shuai]# systemctl start httpd
[root@localhost shuai]# netstat -natp | grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      28532/httpd         

下一步客户机进行验证

mark

mark

实验二:基于端口的构建虚拟主机

  • 修改虚拟web主机的配置文件,增加一项8080的端口参数,为了区别站点,需要把站点文件修改区分,不会覆盖
[root@localhost ~]# vim /etc/httpd/conf/shuai/vhost.conf 

<VirtualHost *:8080>                                     #修改端口信息
  DocumentRoot "/var/www/html/dba02"
  ServerName www.dba02.com
  ErrorLog "logs/www.dba02.com.error_log"
  CustomLog "logs/www.dba02.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>

创建站点

[root@localhost ~]# mkdir /var/www/html/dba02
[root@localhost ~]# vim /var/www/html/dba02/index.html

<h1>this is dba02</h1>

配置监听端口

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf

mark

强烈建议,修改端口信息,千万不能修改为1~1024之间的端口,因为这些端口已经被系统服务所使用

重启服务,验证端口是否开启

root@localhost ~]# systemctl restart httpd      #重载httpd服务
[root@localhost ~]# netstat -ntap | grep httpd   #两个监听端口已开启
tcp        0      0 20.0.0.41:8080          0.0.0.0:*               LISTEN      31057/httpd         
tcp        0      0 20.0.0.41:80            0.0.0.0:*               LISTEN      31057/httpd         

查看验证,IP地址一样,端口不一样

mark

三:构建虚拟主机基于IP实验

  • 构建2个虚拟Web站点
  1. www.abc.com,IP地址为20.0.0.41

  2. www.abc01.com,IP地址为20.0.0.50

修改虚拟web主机的配置文件

当服务器中使用不同IP的虚拟web主机时,/etc/httpd/conf/extra/vhost.conf文件中的IP地址需要具象到一个固定的IP地址,不可以再用*通配符号,以免混淆
<VirtualHost 20.0.0.41:80>
  DocumentRoot "/var/www/html/abc"
  ServerName www.abc.com
  ErrorLog "logs/www.abc.com.error_log"
  CustomLog "logs/www.abc.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>

<VirtualHost 20.0.0.50:80>
  DocumentRoot "/var/www/html/dba"
  ServerName www.dba.com
  ErrorLog "logs/www.dba.com.error_log"
  CustomLog "logs/www.dba.com.access_log" common
  <Directory "/var/www/html">
    Require all granted
  </Directory>
</VirtualHost>

创建新建虚拟web站点

[root@localhost html]# cat abc/index.html 
<h1>this is abc web</h1>
[root@localhost html]# cat dba/index.html 
<h1>this is dba web</h1>

修改主配置文件,添加监听地址

Listen 20.0.0.41:80
Listen 20.0.0.50:80
#Listen 80

重启httpd服务

[root@localhost html]# systemctl restart httpd
[root@localhost html]# netstat -ntap | grep httpd
tcp        0      0 20.0.0.50:80            0.0.0.0:*               LISTEN      92579/httpd         
tcp        0      0 20.0.0.41:80            0.0.0.0:*               LISTEN      92579/httpd         

客户机验证

mark

mark

四:创建站点内的超链接

修改主页文件

[root@localhost html]# vim /var/www/html/abc/index.html

<html>
<head>
 <titele>hello boy</tite>
</head>
<body>
<h1><a href="http://www.abc.com/index.html">hello world</a></h1>
</body>
</html>

重启服务

[root@localhost html]# systemctl restart httpd

客户机验证

[外链图片转存中…(img-xnDeh0Wa-1597279409877)]

[外链图片转存中…(img-laGYLdWF-1597279409877)]

四:创建站点内的超链接

修改主页文件

[root@localhost html]# vim /var/www/html/abc/index.html

<html>
<head>
 <titele>hello boy</tite>
</head>
<body>
<h1><a href="http://www.abc.com/index.html">hello world</a></h1>
</body>
</html>

重启服务

[root@localhost html]# systemctl restart httpd

mark

猜你喜欢

转载自blog.csdn.net/weixin_47151643/article/details/107971428