2.2. Configurar NGINX como un servidor web que proporciona diferentes contenidos para diferentes dominios
Por defecto, NGINX actúa como un servidor web que proporciona el mismo contenido a los clientes para todos los nombres de dominio asociados a las direcciones IP del servidor. Este procedimiento explica cómo configurar NGINX:
-
Para servir peticiones al dominio
example.comcon contenido del directorio/var/www/example.com/ -
Para servir peticiones al dominio
example.netcon contenido del directorio/var/www/example.net/ -
Servir todas las demás solicitudes, por ejemplo, a la dirección IP del servidor o a otros dominios asociados a la dirección IP del servidor, con contenido del directorio
/usr/share/nginx/html/
Requisitos previos
- NGINX se instala como se describe en Sección 2.1, “Instalación y preparación de NGINX”.
Los clientes y el servidor web resuelven el dominio
example.comyexample.neta la dirección IP del servidor web.Tenga en cuenta que debe añadir manualmente estas entradas a su servidor DNS.
Procedimiento
Edite el archivo
/etc/nginx/nginx.conf:Por defecto, el archivo
/etc/nginx/nginx.confya contiene una configuración de tipo catch-all. Si ha eliminado esta parte de la configuración, vuelva a añadir el siguiente bloqueserveral bloquehttpdel archivo/etc/nginx/nginx.conf:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Estos ajustes configuran lo siguiente:
-
La directiva
listendefine qué dirección IP y qué puertos escucha el servicio. En este caso, NGINX escucha en el puerto80en todas las direcciones IPv4 e IPv6. El parámetrodefault_serverindica que NGINX utiliza este bloqueserverpor defecto para las peticiones que coincidan con las direcciones IP y los puertos. -
El parámetro
server_namedefine los nombres de host de los que es responsable este bloqueserver. Establecerserver_namea_configura a NGINX para aceptar cualquier nombre de host para este bloqueserver. -
La directiva
rootestablece la ruta del contenido web para este bloqueserver.
-
La directiva
Añade un bloque similar
serverpara el dominioexample.comal bloquehttp:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
La directiva
access_logdefine un archivo de registro de acceso independiente para este dominio. -
La directiva
error_logdefine un archivo de registro de errores separado para este dominio.
-
La directiva
Añade un bloque similar
serverpara el dominioexample.netal bloquehttp:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Cree los directorios raíz de ambos dominios:
mkdir -p /var/www/example.com/ mkdir -p /var/www/example.net/
# mkdir -p /var/www/example.com/ # mkdir -p /var/www/example.net/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Establezca el contexto
httpd_sys_content_ten ambos directorios raíz:semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com(/.*)?" restorecon -Rv /var/www/example.com/ semanage fcontext -a -t httpd_sys_content_t "/var/www/example.net(/.\*)?" restorecon -Rv /var/www/example.net/
# semanage fcontext -a -t httpd_sys_content_t "/var/www/example.com(/.*)?" # restorecon -Rv /var/www/example.com/ # semanage fcontext -a -t httpd_sys_content_t "/var/www/example.net(/.\*)?" # restorecon -Rv /var/www/example.net/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Estos comandos establecen el contexto
httpd_sys_content_ten los directorios/var/www/example.com/y/var/www/example.net/.Tenga en cuenta que debe instalar el paquete
policycoreutils-python-utilspara ejecutar los comandos derestorecon.Cree los directorios de registro para ambos dominios:
mkdir /var/log/nginx/example.com/ mkdir /var/log/nginx/example.net/
# mkdir /var/log/nginx/example.com/ # mkdir /var/log/nginx/example.net/Copy to Clipboard Copied! Toggle word wrap Toggle overflow Reinicie el servicio
nginx:systemctl restart nginx
# systemctl restart nginxCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Pasos de verificación
Cree un archivo de ejemplo diferente en la raíz de documentos de cada host virtual:
echo "Content for example.com" > /var/www/example.com/index.html echo "Content for example.net" > /var/www/example.net/index.html echo "Catch All content" > /usr/share/nginx/html/index.html
# echo "Content for example.com" > /var/www/example.com/index.html # echo "Content for example.net" > /var/www/example.net/index.html # echo "Catch All content" > /usr/share/nginx/html/index.htmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Utilice un navegador y conéctese a
http://example.com. El servidor web muestra el contenido de ejemplo del archivo/var/www/example.com/index.html. -
Utilice un navegador y conéctese a
http://example.net. El servidor web muestra el contenido de ejemplo del archivo/var/www/example.net/index.html. -
Utilice un navegador y conéctese a
http://IP_address_of_the_server. El servidor web muestra el contenido de ejemplo del archivo/usr/share/nginx/html/index.html.