@[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