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:server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; }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:server { server_name example.com; root /var/www/example.com/; access_log /var/log/nginx/example.com/access.log; error_log /var/log/nginx/example.com/error.log; }-
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:server { server_name example.net; root /var/www/example.net/; access_log /var/log/nginx/example.net/access.log; error_log /var/log/nginx/example.net/error.log; }
Cree los directorios raíz de ambos dominios:
# mkdir -p /var/www/example.com/ # mkdir -p /var/www/example.net/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/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/Reinicie el servicio
nginx:# systemctl restart nginx
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-
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.