Theory+Practice: apache's Virtual web Host Configuration

Keywords: Linux vim DNS network Apache

@[toc]
Common apache features, virtual hosts

One: Virtual Web Host

  • Run multiple Web sites on the same server, each of which does not occupy a real computer independently

    1.1 Types of virtual hosts supported by httpd (three)

  • Type based on domain name
  • IP Address Based Virtual Host
  • Port-based virtual host
    For example:
    www.kgc.om
    www.accp.com
    IP Same, Port Same

IP is different, ports are the same

IP Same, Port Not Connected

Two: An experiment to build a virtual host based on domain name

2.1.1 Installation Package

[root@localhost ~]# yum install bind httpd -y
Package 32:bind-9.11.4-9.P2.el7.x86_64 already installed and latest version
Package httpd-2.4.6-90.el7.centos.x86_64 already installed and latest version
Nothing to do

2.1.2 Turn off Firewall Enhancement Services

[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# 

2.1.3 Configuring dns

Configure dns global profile/etc/named.conf

[root@localhost ~]# vim /etc/named.conf 
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };

Configure dns Zone Profile/etc/named.rfc1912.zones

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

zone "accp.com" IN {
        type master;
        file "accp.com.zone";
        allow-update { none; };
};      

Modify dns region data file

[root@localhost ~]# cd /var/named/
[root@localhost named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]# cp -p named.localhost kgc.com.zone
[root@localhost named]# vim kgc.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       192.168.247.150
~                                                   
[root@localhost named]# cp -p kgc.com.zone accp.com.zone

Finish modifying, start dns Service

[root@localhost named]# systemctl start named

Configure dns for the client to test whether the service is valid

nslookup parsed successfully

2.1.4 Create a virtual host configuration file at / etc/httpd/conf/extra/. For brevity, set the file name to vhost.conf

[root@localhost httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run
[root@localhost httpd]# ls -l
total 0
drwxr-xr-x. 2 root root  37 Dec 12 14:45 conf
drwxr-xr-x. 2 root root  82 Dec 12 14:45 conf.d
drwxr-xr-x. 2 root root 146 Dec 12 14:45 conf.modules.d
lrwxrwxrwx. 1 root root  19 Dec 12 14:45 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root  29 Dec 12 14:45 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root  10 Dec 12 14:45 run -> /run/httpd
[root@localhost httpd]# 
[root@localhost httpd]# cd conf
[root@localhost conf]# ls
httpd.conf  magic
[root@localhost conf]# mkdir extra
[root@localhost conf]# cd extra/
[root@localhost extra]# ls
[root@localhost extra]# 

/etc/httpd/conf/extra/vhost.conf file

  • Refers to all ip addresses accessible through port 80
    DocumentRoot is a web site directory
    ServerName "Site Service Domain Name"
    Errorlog "Specify error log path"
    Customlog Specify Access Log Path followed by common Extension Tool
    Specify the directory name for the detailed configuration, which can be found to be the parent directory of the web site directory
    Allow all access rights for all user hosts//This will expand further configuration properties later
    [root@localhost extra]# vim vhost.conf
    1 <VirtualHost *:80>
    2   DocumentRoot "/var/www/html/kgc"
    3   ServerName www.kgc.com
    4   Errorlog "logs/www.kgc.com.error_log"
    5   Customlog "logs/www.kgc.comaccess_log" common
    6   <Directory "/var/www/html">
    7    Require all granted
    8   </Directory>
    9 </VirtualHost>
    10 
    11 <VirtualHost *:80>
    12   DocumentRoot "/var/www/html/accp"
    13   ServerName www.accp.com
    14   Errorlog "logs/www.accp.com.error_log"
    15   Customlog "logs/www.accp.comaccess_log" common
    16   <Directory "/var/www/html">
    17    Require all granted
    18   </Directory>
    19 </VirtualHost>
### 2.1.5 Create the first page of two web sites, the first page file index.html in the site directory under /var/www/html
```bash
[root@localhost extra]# cd /var/
[root@localhost var]# ls
account  cache  db     games   kerberos  local  log   named  opt       run    target  www
adm      crash  empty  gopher  lib       lock   mail  nis    preserve  spool  tmp     yp
[root@localhost var]# cd www
[root@localhost www]# ls
cgi-bin  html
[root@localhost www]# cd html
[root@localhost html]# ls
[root@localhost html]# mkdir kgc accp
[root@localhost html]# ls
accp  kgc
[root@localhost html]# echo "this is accp web" > accp/index.html
[root@localhost html]# echo "this is kgc web" > kgc/index.html
[root@localhost html]# tree accp kgc
accp
└── index.html
kgc
└── index.html

0 directories, 2 files
[root@localhost html]# 

2.1.7 Important: Ext paths need to be added to the main configuration file to be recognized at startup

[root@localhost html]# vim /etc/httpd/conf/httpd.conf 
354 Include conf/extra/vhost.conf

2.1.8 Open services, view service ports

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

2.1.9 Validation on Client


3: Building Virtual Host--Port-based Experiments

Based on the above experiment, configure a virtual host with an incompatible port

3.1.1 Modify the configuration file of the virtual web host and add a parameter of port 8080. In order to distinguish the sites, you need to modify the site file name to distinguish them and not overwrite them.

[root@localhost html]# vim /etc/httpd/conf/extra/vhost.conf 
//Replication Modification Increase
 11 <VirtualHost *:8080>
 12   DocumentRoot "/var/www/html/kgc02"
 13   ServerName www.kgc02.com
 14   Errorlog "logs/www.kgc02.com.error_log"
 15   Customlog "logs/www.kgc02.comaccess_log" common
 16   <Directory "/var/www/html">
 17    Require all granted
 18   </Directory>
 19 </VirtualHost>
[root@localhost html]# ls
accp  kgc
[root@localhost html]# cp -p kgc kgc02
cp: omitting directory 'kgc'
[root@localhost html]# mkdir kgc02
[root@localhost html]# echo "this is web kgc02" >kgc02/index.html
[root@localhost html]# 

3.1.2 Adding a port also adds a listening address, which is modified in the main profile/etc/httpd/conf/httpd/conf

[root@localhost html]# vim /etc/httpd/conf/httpd.conf
 41 Listen 192.168.247.150:80
 42 Listen 192.168.247.150:8080
 43 #Listen 80

3.1.3 Restart the service to verify that the interface is open

[root@localhost html]# systemctl restart httpd
[root@localhost html]# netstat -napt | grep httpd
tcp        0      0 192.168.247.150:8080    0.0.0.0:*               LISTEN      91814/httpd         
tcp        0      0 192.168.247.150:80      0.0.0.0:*               LISTEN      91814/httpd   

3.1.4 View authentication, same IP address, different ports

Fourth: Building Virtual Host --- Experiment Based on IP

4.1.1 Adding network cards to create virtual web hosts with several different IP addresses requires several additional network cards

[root@localhost html]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.247.150  netmask 255.255.255.0  broadcast 192.168.247.255

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.247.158  netmask 255.255.255.0  broadcast 192.168.247.255

Verify network connection of network card

4.1.2 Modify the configuration file of the virtual web host

Note: When using virtual web hosts with different IPs on the server, the IP addresses in the / etc/httpd/conf/extra/vhost.conf file need to be represented as a fixed IP address, and the * wildcard symbol should not be used to avoid confusion.
[root@localhost html]# vim /etc/httpd/conf/extra/vhost.conf 
<VirtualHost 192.168.247.158:80>
  DocumentRoot "/var/www/html/accpaccp"
  ServerName www.accpaccp.com
  Errorlog "logs/www.accpaccp.com.error_log"
  Customlog "logs/www.accpaccp.comaccess_log" common
  <Directory "/var/www/html">
   Require all granted
  </Directory>
</VirtualHost>

4.1.3 Create a new virtual web site directory

[root@localhost html]# ls
accp  accp02  kgc  kgc02
[root@localhost html]# mkdir accpaccp
[root@localhost html]# echo "this is 192.168.247.158" > accpaccp/index.html

4.1.4 Modify the main profile to increase listening addresses

[root@localhost html]# vim /etc/httpd/conf/httpd.conf 
Listen 192.168.247.158:80

4.1.5 Restart the httpd service

[root@localhost html]# systemctl restart httpd
[root@localhost html]# netstat -natp | grep httpd
tcp        0      0 192.168.247.150:8080    0.0.0.0:*               LISTEN      123662/httpd        
tcp        0      0 192.168.247.158:80      0.0.0.0:*               LISTEN      123662/httpd        
tcp        0      0 192.168.247.150:80      0.0.0.0:*               LISTEN      123662/httpd   

4.1.6 Client Validation

######Because no dns resolution is configured, you need to enter an IP address to enter the website. Next, you need to add domain name resolution for this IP address


4.1.7 Modify dns profile

/etc/named.rfc1912.zones file
[root@localhost html]# vim /etc/named.rfc1912.zones
zone "accpaccp.com" IN {
        type master;
        file "accpaccp.com.zone";
        allow-update { none; };
};
/var/named/directory, create corresponding region data file
[root@localhost html]# cd /var/named
[root@localhost named]# ls
accp.com.zone  data  dynamic  kgc.com.zone  named.ca  named.empty  named.localhost  named.loopback  slaves
[root@localhost named]# cp -p accp.com.zone accpaccp.com.zone
[root@localhost named]# vim accpaccp.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       192.168.247.158

4.1.8 Restart Domain Name Resolution Service

[root@localhost named]# systemctl restart named

5: Create intra-site hyperlinks

5.1 Modify Home Page

[root@localhost named]# vim /var/www/html/accpaccp/index.html 
<html>
<head>
 <title>hello world</title>
</head>
<body>
   <h1><a href="http://www.accp.com/index.html">hello world</a></h1>
</body>
</html>

5.2 Client testing, and of course, restarting the HTTPD service

[root@localhost named]# systemctl restart httpd


Posted by mdgalib on Thu, 12 Dec 2019 19:16:14 -0800