Introducción :
Un servidor web virtual se refiere a la ejecución de varios sitios web en el mismo servidor, cada uno de los cuales no ocupa todo el servidor de forma independiente, por lo que se denomina servidor web "virtual". Los servicios de alojamiento web virtual pueden hacer un uso completo de los recursos de hardware del servidor, lo que reduce en gran medida el costo de construcción y operación del sitio web.
El uso del servicio httpd puede ser muy conveniente para construir un servidor virtual, solo es necesario ejecutar un servicio httpd para admitir una gran cantidad de sitios web.
Los tipos de host virtual admitidos por el servicio httpd incluyen los tres siguientes:
Basado en el nombre de dominio : use un nombre de dominio diferente para cada host virtual, pero la dirección IP correspondiente es la misma;
Basado en la dirección IP : use diferentes nombres de dominio para cada host virtual, y sus correspondientes direcciones IP también son diferentes;
Basado en puerto : este método no usa nombres de dominio ni direcciones IP para distinguir el contenido de un sitio diferente, sino que usa puertos TCP diferentes. Por lo tanto, los usuarios deben especificar el número de puerto para acceder a diferentes sitios virtuales al mismo tiempo.
Entre estos tipos de hosts web virtuales, los hosts virtuales basados en dominios son los más utilizados; los hosts virtuales basados en IP y en puertos generalmente solo son adecuados para empresas internas.
Uno: Alojamiento web virtual
- Ejecute varios sitios web en el mismo servidor, cada uno de los cuales no ocupa una computadora real de forma independiente
1.1: Pasos de implementación del host virtual basado en el host del nombre de dominio:
-
Proporcionar resolución de nombres de dominio para hosts virtuales
-
Primero, debe crear un servicio DNS para proporcionar resolución de nombres de dominio y crear un servicio DNS.
1.2: Tipos de hosts virtuales compatibles con httpd
-
Alojamiento virtual basado en nombres de dominio
-
Host virtual basado en la dirección IP
-
Alojamiento virtual basado en puertos
2: Cree un host virtual basado en dominio virtual
Pasos experimentales
Agregar dos tarjetas de red
IP es
20.0.0.41
20.0.0.50 respectivamente
Configurar la información de la tarjeta de red
[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 #重启网卡
Instalar Apache y servicio DNS
[root@localhost ~]# yum install bind httpd -y
...省略内容
Configurar DNS
- /etc/named.conf ## Archivo de configuración principal
- /etc/named.rfc1912.zones ## Archivo de configuración de zona
- /var/named/named.localhost ## Archivo de configuración de datos regionales
Configure el archivo de configuración global de 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 任何都可以访问地址
Configurar perfil de zona
[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; };
};
Configurar archivo de datos de zona
[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
Reinicie la tarjeta de red para desactivar la función de protección
[root@localhost named]# setenforce 0
[root@localhost named]# iptables -F
[root@localhost named]# systemctl start named
La prueba del cliente funciona
Crear archivo de configuración de host virtual
- El archivo de directorio está en / etc / httpd / conf / extra /, y el nombre del archivo de configuración simple es 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 7月 7 13:35 conf
drwxr-xr-x. 2 root root 82 7月 7 13:35 conf.d
drwxr-xr-x. 2 root root 146 7月 7 13:35 conf.modules.d
lrwxrwxrwx. 1 root root 19 7月 7 13:35 logs -> ../../var/log/httpd
lrwxrwxrwx. 1 root root 29 7月 7 13:35 modules -> ../../usr/lib64/httpd/modules
lrwxrwxrwx. 1 root root 10 7月 7 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
Archivo /etc/httpd/conf/extra/vhost.conf
- Significa que se puede acceder a todas las direcciones IP a través del puerto 80
- DocumentRoot "es un directorio de sitios web"
- ServerName "Nombre de dominio del servicio del sitio"
- Errorlog "Especifique la ruta del registro de errores"
- Registro personalizado "Especifique la ruta del registro de acceso" seguido de herramientas de extensión comunes
- Especifique el nombre del directorio de la configuración detallada, puede encontrar que es el directorio principal del directorio del sitio web, lo que
permite todos los derechos de acceso de todos los hosts de los usuarios // Esto expandirá más atributos de configuración más adelante
[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>
Crea un sitio con dos páginas web
- El archivo de la página de inicio index.html está en el directorio del sitio de / 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>
Necesita agregar la ruta de shuai al archivo de configuración principal, comience a leer para ser reconocido
[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
Inicie el servicio, compruebe el puerto
[root@localhost shuai]# systemctl start httpd
[root@localhost shuai]# netstat -natp | grep httpd
tcp6 0 0 :::80 :::* LISTEN 28532/httpd
El siguiente paso para que el cliente verifique
Experimento 2: Construcción de hosts virtuales basada en puertos
- Modifique el archivo de configuración del servidor web virtual y agregue un parámetro de puerto de 8080. Para distinguir los sitios, los archivos del sitio deben modificarse y distinguirse, y no se sobrescribirán
[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>
Crea un sitio
[root@localhost ~]# mkdir /var/www/html/dba02
[root@localhost ~]# vim /var/www/html/dba02/index.html
<h1>this is dba02</h1>
Configurar puerto de escucha
[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
Se recomienda encarecidamente modificar la información del puerto y no debe modificarla a un puerto entre 1 y 1024, ya que estos puertos han sido utilizados por los servicios del sistema.
Reinicie el servicio y verifique que el puerto esté abierto
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
Verifique la verificación, la dirección IP es la misma, el puerto es diferente
Tres: construir un host virtual basado en un experimento de IP
- Construya 2 sitios web virtuales
-
www.abc.com, la dirección IP es 20.0.0.41
-
www.abc01.com, la dirección IP es 20.0.0.50
Modificar el archivo de configuración del servidor web virtual
Cuando se utilizan hosts web virtuales con diferentes IP en el servidor, la dirección IP en el archivo /etc/httpd/conf/extra/vhost.conf debe representarse en una dirección IP fija, y el símbolo * comodín no debe usarse para evitar confusiones
<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>
Cree un nuevo sitio web virtual
[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>
Modifique el archivo de configuración principal y agregue una dirección de escucha
Listen 20.0.0.41:80
Listen 20.0.0.50:80
#Listen 80
Reinicie el servicio 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
Autenticación de cliente
4: crea un hipervínculo dentro del sitio
Modificar el archivo de la página de inicio
[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>
Reiniciar servicio
[root@localhost html]# systemctl restart httpd
Autenticación de cliente
[La imagen del enlace externo se está transfiriendo ... (img-xnDeh0Wa-1597279409877)]
[Las imágenes del enlace externo se están transfiriendo ... (img-laGYLdWF-1597279409877)]
4: crea un hipervínculo dentro del sitio
Modificar el archivo de la página de inicio
[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>
Reiniciar servicio
[root@localhost html]# systemctl restart httpd