Apache virtual host access method (based on the domain name, port, IP)

Construction of Web Hosting

Virtual Web Hosting:

1. In the same - run multiple Web sites physical servers, which are not independent of each site occupied by a real computer

httpd virtual hosts type:

1. Host-based virtual domain (common corporate)
2. IP address-based virtual hosts
3. Based on the virtual host ports

Examples of large corporate projects:
two physical hosts (A / B)
two hosts, there are two virtual site
hosts A and B have accp sites and sites kgc
identical website content, while providing business outside, not only uses reasonable distribution, also played a hot standby
learn a host architecture two sites

A. Construction of a domain name based virtual hosts

Application examples:

1. Construction of two virtual Web sites
www.kgc.com, IP address 173.17.17.11
www.kcce.com, IP address 173.17.17.11
2. access to both the domain name in the browser, displays different content

Web Hosting provides domain name resolves to:
[root@dnssvr ~]# vim /var/named/chroot/var/named/kgc.com.zone
@   IN  NS  dnssvr.kgc.com.
dnssvr IN   A   173.1 7.1 7.2
www IN  A   173.17.17.11
[root@dnssvr ~]# vim /var/named/chroot/var/named/kcce.com.zone
@   IN  NS  dnssvr.kgc.com.
www IN  A   1 73.1 7.1 7.1 1
Page document prepared for the virtual host:
[root@www ~]# mkdir -p /var/www/html/kgccom
[root@www ~]# mkdir -p /var/www/html/kccecom
[root@www ~]# echo "<h1 > www.kgc.com</h1>" >
/var/www/html/kgccom/index.html
[root@www ~]# echo "<h1 > www.kcce.com </h1>" >
/var/www/html/kccecom/index.html
Add a virtual host configuration:
[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
<VirtualHost *:80>
    DocumentRoot "/var/www/html/kgccom"
    ServerName www.kgc.com
    ErrorLog "logs/www.kgc.com.error_log"
    CustomLog "logs/www.kgc.com.access_log" common
    < Directory "/var/www/html" >
        Require all granted
    </Directory>
</VirtualHost>
<VirtualHost *:80>
    DocumentRoot "/var/www/html/kccecom"
    ServerName www.kcce.com
<VirtualHost>
In each client to access virtual Web host

Demo1: name-based virtual hosts access

Add a second NIC card in the virtual machine settings and displays:

Here Insert Picture Description

[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.131  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::a7c6:cf70:62f2:faf0  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:86:f9:b2  txqueuelen 1000  (Ethernet)
        RX packets 667004  bytes 977833518 (932.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 165563  bytes 10169247 (9.6 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.134  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::9ce4:351a:2c74:9ad5  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:86:f9:bc  txqueuelen 1000  (Ethernet)
        RX packets 216  bytes 17516 (17.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 26  bytes 4391 (4.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
//目前主机中有两张网卡:ens33和ens36,地址分别为:192.168.56.131和 192.168.56.134

Install the package:

[root@localhost ~]# yum install bind httpd -y

Modify the DNS configuration file:

[root@localhost ~]# vim /etc/named.conf 
options {
        listen-on port 53 { any; };             //其中的127.0.0.1改为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; };               //其中的locahost改为any
修改完成后按Esc,输入:wq保存退出

Modify zone configuration file:

[root@localhost ~]# vim /etc/named.rfc1912.zones
//找到以下格式,按5yy复制五行,在任意一个5行的最后一行按o在下一行插入,修改其中域名
zone "accp.com" IN {
        type master;
        file "accp.com.zone";
        allow-update { none; };
};

zone "kgc.com" IN {
        type master;
        file "kgc.com.zone";
        allow-update { none; };
};
修改完成后按Esc,输入:wq保存退出

Modify area data configuration 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 accp.com.zone
[root@localhost named]# vim accp.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.56.131        //此处为添加的主机A记录,地址指向自己
//需要删除IPv6的解析
修改完成后按Esc,输入:wq保存退出

[root@localhost named]# cp -p accp.com.zone 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.56.131
 //此处的文件内容不需要做任何修改
可直接输入:q退出
//为方便后面测试解析,接下来我们启动服务,并关闭防火墙及安全功能
[root@localhost named]# systemctl start named
[root@localhost named]# systemctl stop firewalld.service 
[root@localhost named]# setenforce 0

At this point you can test whether you can perform DNS resolution:

此处我们使用一台win7虚拟机进行DNS的解析:
先需要在网络的更改适配器设置中对IPv4的DNS地址进行修改:192.168.56.131       
//此处修改的是DNS主机的地址

再使用管理员身份运行cmd命令:   
C:\Windows\system32>nslookup www.accp.com
服务器:  UnKnown
Address:  192.168.56.131
名称:    www.accp.com
Address:  192.168.56.131

C:\Windows\system32>nslookup www.kgc.com
服务器:  UnKnown
Address:  192.168.56.131
名称:    www.kgc.com
Address:  192.168.56.131
//此时通过验证表明DNS的解析是没有问题的,接下来我们就可以做网站了

Do virtual host configuration file:

[root@localhost named]# cd /etc/httpd
[root@localhost httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run
[root@localhost httpd]# cd conf
[root@localhost conf]# ls
httpd.conf  magic
[root@localhost conf]# mkdir extra
[root@localhost conf]# ls
extra  httpd.conf  magic
[root@localhost conf]# cd extra/
[root@localhost extra]# vim vhost.conf
<VirtualHost *:80>
  DocumentRoot "/var/www/html/accp/"        //站点目录
  ServerName www.accp.com       //域名
  ErrorLog "logs/www.accp.com.error_log"        //错误日志
  CustomLog "logs/www.accp.com.access_log" common       //访问日志
  <Directory "/var/www/html/">
    Require all granted         //访问权限为允许所有
  </Directory>
</VirtualHost>

按Esc退出插入模式,输入:11,19 s/accp/kgc/g    //把从11行到19行把其中的accp改成kgc,做全局替换
 11 <VirtualHost *:80>
 12   DocumentRoot "/var/www/html/kgc/"
 13   ServerName www.kgc.com
 14   ErrorLog "logs/www.kgc.com.error_log"
 15   CustomLog "logs/www.kgc.com.access_log" common
 16   <Directory "/var/www/html/">
 17     Require all granted
 18   </Directory>
 19 </VirtualHost>
修改完成后按Esc,输入:wq保存退出
[root@localhost extra]# cd ../../
[root@localhost httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run
[root@localhost httpd]# pwd
/etc/httpd          //参考点,以工作目录为参考
[root@localhost httpd]# ls -l
总用量 0
drwxr-xr-x. 3 root root  50 10月 22 22:36 conf
drwxr-xr-x. 2 root root  82 10月 22 21:53 conf.d
drwxr-xr-x. 2 root root 146 10月 22 21:53 conf.modules.d
lrwxrwxrwx. 1 root root  19 10月 22 21:53 logs -> ../../var/log/httpd    //软链接在此目录下
lrwxrwxrwx. 1 root root  29 10月 22 21:53 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root  10 10月 22 21:53 run -> /run/httpd
[root@localhost httpd]# cd /var/log/httpd/
[root@localhost httpd]# ls
//此时是空的,因为没有启动,所以没有日志文件

Create a site:

[root@localhost httpd]# cd /var/www/html/
[root@localhost html]# ls
[root@localhost html]# mkdir accp kgc
[root@localhost html]# ls
accp  kgc
[root@localhost html]# cd accp/
[root@localhost accp]# ls
[root@localhost accp]# vim index.html
<h1>this is accp web</h1>
输入完成后按Esc,输入:wq保存退出
[root@localhost accp]# cd ../kgc/
[root@localhost kgc]# vim index.html
<h1>this is kgc web</h1>
输入完成后按Esc,输入:wq保存退出

在主配置文件中的包含语句需要进行检查,因为之前的写入内容未在主配置文件中进行声明:
[root@localhost kgc]# cd /etc/httpd/
[root@localhost httpd]# cd conf/extra/
[root@localhost extra]# ls
vhost.conf
[root@localhost extra]# pwd
/etc/httpd/conf/extra
[root@localhost extra]# cd ../../
[root@localhost httpd]# ls
conf  conf.d  conf.modules.d  logs  modules  run
[root@localhost httpd]# pwd
/etc/httpd
[root@localhost httpd]# cd conf
[root@localhost conf]# ls
extra  httpd.conf  magic
[root@localhost conf]# vim httpd.conf
 //按大写字母G到末行,按o在下行插入
Include conf/extra/vhost.conf
输入完成后按Esc,输入:wq保存退出 
[root@localhost extra]# systemctl start httpd

Verification: win7 browser, enter: www.accp.com / www.kgc.com

Here Insert Picture Description
Here Insert Picture Description

The above is based on a domain name to access the Web Hosting

——————————————————————————————————————————————————

II. Construction of a port-based virtual hosts

Application examples:

1. Construction of two virtual Web sites
www.kcce.com, IP address, port 173.17.17.11:80
www.kcce.com, IP address, port 173.17.17.11:8353
2. access both in the browser when ports, display different content

[root@www ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
< VirtualHost 173.1 7.17.11:80>
    DocumentRoot "/var/www/htm/kccecom"
    ServerName www.kcce.com
</VirtualHost>
<VirtualHost 173.17.17.11:8353>
    DocumentRoot "/var/www/htm/kccepad"
    ServerName www.kcce.com
</virtualHost>

Listen 80
Listen 8353
#监听端口写在主配置文件中

Demo2: access based on different ports

[root@localhost extra]# vim vhost.conf
<VirtualHost *:8080>
   DocumentRoot "/var/www/html/kgc02/"
   ServerName www.kgc.com
   ErrorLog "logs/www.kgc02.com.error_log"
   CustomLog "logs/www.kgc02.com.access_log" common
   <Directory "/var/www/html/">
      Require all granted
   </Directory>
</VirtualHost>
输入完成后按Esc,输入:wq保存退出

[root@localhost extra]# cd /var/www/html/
[root@localhost html]# ls
accp  kgc
[root@localhost html]# mkdir kgc02
[root@localhost html]# ls
accp  kgc  kgc02
[root@localhost html]# cd kgc02/
[root@localhost kgc02]# vim index.html
<h1>this is kgc02 web</h1>
输入完成后按Esc,输入:wq保存退出

[root@localhost kgc02]# vim /etc/httpd/conf/httpd.conf
输入:/Listen查到到监听端口位置
Listen 192.168.56.131:80
Listen 192.168.56.131:8080
#Listen 80
此处需要做的更改的是把IPv6的监听给注释关闭,同时把IPv4的监听地址更换为自己Linux的IP地址,使用yy复制,在下行粘贴,将端口改为8080
#修改完成后按Esc,输入:wq保存退出

[root@localhost kgc02]# systemctl restart httpd         //重启服务
[root@localhost kgc02]# netstat -ntap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 192.168.56.131:8080     0.0.0.0:*               LISTEN      52732/httpd         
tcp        0      0 192.168.56.131:80       0.0.0.0:*               LISTEN      52732/httpd    
#此时可以看到两个端口都处于监听状态

Here Insert Picture Description

Verification: win7 browser, enter: www.kgc.com:8080

At this show is kgc02 home page of our pre-written 8080 port
if you enter: www.kgc.com: 80, it also shows that this is kgc web interface
Here Insert Picture Description

These are based on the way to access the virtual host port

——————————————————————————————————————————————————

Demo3: access based on different IP

Previously, we have two NIC addresses are: 192.168.56.131 and 192.168.56.134, here need to spend

[root@localhost kgc02]# cd /etc/httpd/conf/extra/
[root@localhost extra]# ls
vhost.conf
[root@localhost extra]# vim vhost.conf
//11,29 s/^/#/g     //全局把11行到29行进行注释,此处不需要使用
<VirtualHost 192.168.56.131:80>         //此处将*号修改为第一张网卡的IP
  DocumentRoot "/var/www/html/accp/"
  ErrorLog "logs/www.accp.com.error_log"
  CustomLog "logs/www.accp.com.access_log" common
  <Directory "/var/www/html/">
    Require all granted
  </Directory>
</VirtualHost>

<VirtualHost 192.168.56.134:80>  //此处将*号改为第二张网卡的IP,并将下面的accp改为accp02以作区分
  DocumentRoot "/var/www/html/accp02/"
  ErrorLog "logs/www.accp02.com.error_log"
  CustomLog "logs/www.accp02.com.access_log" common
  <Directory "/var/www/html/">
    Require all granted
  </Directory>
</VirtualHost>
#修改完成后按Esc,输入:wq保存退出

Create a directory site:

[root@localhost extra]# cd /var/www/html/
[root@localhost html]# mkdir accp02
[root@localhost html]# cd accp02/
[root@localhost accp02]# vim index.html
<h1>this is 134 accp02 web</h1>
#输入完成后按Esc,输入:wq保存退出

[root@localhost accp02]# vim ../accp/index.html
<h1>this is 131 accp web</h1>
#修改完成后按Esc,输入:wq保存退出

Modify listening address:

[root@localhost accp02]# vim /etc/httpd/conf/httpd.conf
Listen 192.168.56.131:80
Listen 192.168.56.134:80
#Listen 192.168.56.131:8080
把8080端口进行注释,并添加一行192.168.56.134的80端口监听
#修改完成后按Esc,输入:wq保存退出

[root@localhost accp02]# systemctl restart httpd

Verification: win7 browser, enter: 192.168.56.131 / 192.168.56.134

Here Insert Picture Description
Here Insert Picture Description

Modify DNS:

[root@localhost accp02]# cd /etc/httpd/conf/extra/
[root@localhost extra]# vim vhost.conf 
<VirtualHost 192.168.56.131:80>
  DocumentRoot "/var/www/html/accp/"
  ServerName www.accp.com
  ErrorLog "logs/www.accp.com.error_log"
  CustomLog "logs/www.accp.com.access_log" common
  <Directory "/var/www/html/">
    Require all granted
  </Directory>
</VirtualHost>

<VirtualHost 192.168.56.134:80>
  DocumentRoot "/var/www/html/accp02/"
  ServerName www.naccp.com
  ErrorLog "logs/www.accp02.com.error_log"
  CustomLog "logs/www.accp02.com.access_log" common
  <Directory "/var/www/html/">
    Require all granted
  </Directory>
</VirtualHost>
#以上两段需要添加ServerName

Add a new area:

[root@localhost extra]# vim /etc/named.rfc1912.zones
zone "naccp.com" IN {
        type master;
        file "naccp.com.zone";
        allow-update { none; };
};
#添加以上内容
#修改完成后按Esc,输入:wq保存退出

[root@localhost extra]# cd /var/named/
[root@localhost named]# cp -p accp.com.zone naccp.com.zone
[root@localhost named]# vim naccp.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.56.134      //IP地址改为二网卡的地址
#修改完成后按Esc,输入:wq保存退出

[root@localhost named]# systemctl restart named
[root@localhost named]# systemctl restart httpd         //重启服务

Verification: win7 browser, enter: www.accp.com / www.naccp.com

Here Insert Picture Description
Here Insert Picture Description

These are the different IP-based virtual hosts access ways

Guess you like

Origin blog.51cto.com/14464303/2444664