Cómo instalar Nginx con hosts virtuales y certificado SSL

Esta es la página de índice de www.wearetecmint.com

Cómo instalar Nginx con hosts virtuales y certificado SSL

Nginx. (abreviatura de Engine-x. es un servidor proxy inverso y HTTP gratuito, de código abierto, potente, escalable y de alto rendimiento, un servidor de correo y TCP estándar/Servidor proxy UDP. Es fácil de usar y configurar, con un lenguaje de configuración simple. Nginx es ahora el software de servidor web preferido para impulsar sitios muy cargados, debido a su escalabilidad y rendimiento.

En este artículo se discutirá cómo usar Nginx como servidor HTTP, configurarlo para servir contenido web y configurar crear hosts virtuales basados ​​en nombres y crear e instalar SSL para transmisiones de datos seguras, incluido un certificado autofirmado en Ubuntu y CentOS.

Cómo instalar el servidor web Nginx

Primero comience instalando el paquete Nginx desde los repositorios oficiales usando su administrador de paquetes como se muestra.

————En Ubuntu———— $ sudo apt update $ sudo apt install nginx ————En CentOS———— $ sudo yum update $ sudo yum install epel-release $ sudo yum install nginx

Después de instalar el paquete Nginx, necesita iniciar el servicio por ahora, habilitarlo para que se inicie automáticamente en el momento del arranque y ver su estado, usando los siguientes comandos. Tenga en cuenta que en Ubuntu. debe iniciarse y habilitarse automáticamente mientras el paquete está preconfigurado.

$ sudo systemctl start nginx $ sudo systemctl enable nginx $ sudo systemctl status nginx  Iniciar y verificar el estado de Nginx  Iniciar y comprobar Estado de Nginx Iniciar y verificar el estado de Nginx

En este punto, el servidor web Nginx debería estar en funcionamiento, puede verificar el estado con netstat comando.

$ sudo netstat-tlpn | grep nginx  Verificar el estado del puerto de Nginx  Verificar el estado del puerto Nginx Verificar el estado del puerto Nginx freestar.config. enabled_slots.push ( locationName: “tecmint_incontent”, slotId: “tecmint_incontent”);

Si su sistema tiene un firewall habilitado, debe abrir el puerto 80. y 443. para permitir HTTP. y HTTPS. respectivamente, a través de él, ejecutándolo.

————En CentOS———— $ sudo firewall-cmd–permanent–add-port = 80/tcp $ sudo firewall-cmd–permanent–add-port = 443/tcp $ sudo firewall-cmd–reload ————En Ubuntu———— $ sudo ufw allow 80/tcp $ sudo ufw allow 443/tcp $ sudo ufw reload

El método ideal para probar la instalación de Nginx y verificar si se está ejecutando y puede servir páginas web es abriendo un navegador web y apuntando a la IP del servidor.

http://Your-IP-Address O http://Your-Domain.com

La siguiente pantalla debería indicar una instalación en funcionamiento.

 Verificar el ancho de la página web de Nginx  Verificar la página web de Nginx Verificar la página web de Nginx

Cómo configurar el servidor web de Nginx

Los archivos de configuración de Nginx se encuentran en el directorio/etc/nginx y el archivo de configuración global se encuentra en/etc/nginx/nginx.conf tanto en CentOS como en Ubuntu.

Nginx se compone de módulos que están controladas por varias opciones de configuración, conocidas como directivas. Una directiva. puede ser simple (en el nombre del formulario y los valores terminados con un;) o bloque. (tiene instrucciones adicionales adjuntas usando ). Y una directiva de bloque que contiene otras directivas se denomina contexto.

Todas las directivas se explican de forma exhaustiva en la documentación de Nginx en el sitio web del proyecto. Puede consultarlo para obtener más información.

Cómo entregar contenido estático usando Nginx en modo independiente

A nivel básico, Nginx se puede usar para entregar contenido estático como HTML y archivos multimedia, en modo independiente, donde solo se usa el bloque de servidor predeterminado (análogo a Apache donde no se han configurado hosts virtuales).

Comenzaremos explicando brevemente la estructura de configuración en el archivo de configuración principal.

$ sudo vim/etc/nginx/nginx.conf

Si observa este archivo de configuración de Nginx, la estructura de configuración debería aparecer de la siguiente manera y esto se conoce como el contexto principal, que contiene muchas otras directivas simples y de bloque. Todo el tráfico web se maneja en el contexto http.

user nginx; worker_processes 1; ….. error_log/var/log/nginx/error.log warn; pid/var/run/nginx.pid; ….. eventos ….. http servidor ……. …..

La siguiente es una muestra de la configuración principal de Nginx (/etc/nginx/nginx.conf. , donde el bloque http de arriba contiene una directiva de inclusión que le dice a Nginx dónde para encontrar archivos de configuración de sitios web (configuraciones de host virtual).

Archivo de configuración de Nginx usuario www-data; worker_processes auto; pid/run/nginx.pid; eventos worker_connections 768; # multi_accept on; http {incluir/etc/nginx/mime.types; tipo_predeterminado application/octet-stream; incluir/etc/nginx/mime.types; tipo_predeterminado application/octet-stream; access_log/var/log/nginx/access.log; error_log/var/log/nginx/error.log; enviar archivo encendido; #tcp_nopush on; keepalive_timeout 65; #gzip activado; include/etc/nginx/conf.d/*.conf;.

Tenga en cuenta que en Ubuntu. también encontrará una directiva de inclusión adicional ( include/etc/nginx/sites-enabled/*;. , donde el directorio /etc/nginx/sites-enabled/ almacena enlaces simbólicos a los archivos de configuración de sitios web creados en /etc/nginx/sites-available/, para habilitar los sitios. Y eliminar un enlace simbólico inhabilita ese sitio en particular.

Según la fuente de instalación, encontrará el archivo de configuración del sitio web predeterminado en /etc/nginx/conf.d/default.conf (si lo instaló desde el repositorio oficial NGINX. y EPEL. o /etc/nginx/sites-enabled/default. (si lo instaló desde Ubuntu repositorios).

Este es nuestro bloque de servidor nginx predeterminado de muestra ubicado en /etc/nginx/conf.d/default.conf. en el sistema de prueba.

servidor escuchar 80 default_server; escuchar [::]: 80 default_server; nombre del servidor _; root/var/www/html/; index index.html; ubicación/try_files $ uri $ uri/= 404;

Una breve explicación de las directivas en la configuración anterior:

  • listen. especifica el puerto. en el que escucha el servidor.
  • server_name. define el nombre del servidor, que puede ser nombres exactos, nombres comodín o expresiones regulares.
  • raíz. especifica el directorio desde el cual Nginx servirá páginas web y otros documentos.
  • índice. especifica el (los) tipo (s) de archivo (s) de índice que se entregarán.
  • ubicación. se utiliza para procesar solicitudes para archivos y carpetas específicos.

Desde un navegador web, cuando apunta al servidor usando el nombre de host. localhost o su dirección IP, procesa la solicitud y sirve el archivo /var/www/html/index.html. e inmediatamente guarda el evento en su registro de acceso (/var/log/nginx/access.log. con un Respuesta 200 (OK). En caso de error (evento fallido), registra el mensaje en el registro de errores (/var/log/nginx/error.log. .

 Test Nginx Default Site Probar el sitio predeterminado de Nginx Probar el sitio predeterminado de Nginx

Para obtener más información acerca de cómo iniciar sesión en Nginx. puede consultar Cómo configurar la configuración personalizada Formatos de registro de acceso o error en Nginx.

En lugar de utilizar los archivos de registro predeterminados, puede definir archivos de registro personalizados para diferentes sitios web, como veremos más adelante, en la sección “configuración de nombre-hosts virtuales basados ​​en servidores (bloques de servidor) ”.

Cómo restringir el acceso a una página web con Nginx

Para restringir el acceso a su sitio web/aplicación o algunas partes del mismo, puede configurar la autenticación HTTP básica. Esto se puede usar esencialmente para restringir el acceso a todo el servidor HTTP, bloques de servidores individuales o bloques de ubicación.

Comience creando un archivo que almacenará sus credenciales de acceso ( nombre de usuario/contraseña. ) utilizando la utilidad htpasswd.

$ yum install httpd-tools # RHEL/CentOS $ sudo apt install apache2-utils # Debian/Ubuntu

Como ejemplo, agreguemos el usuario admin a esta lista (puede agregar tantos usuarios como sea posible), donde la opción-c se usa para especificar el archivo de contraseña y la-B para cifrar la contraseña. Una vez que presione [Enter]. se le pedirá que ingrese la contraseña del usuario:

$ sudo htpasswd-Bc/etc/nginx/conf.d/.htpasswd admin

Luego, asignemos los permisos y la propiedad adecuados al archivo de contraseña (reemplace el usuario y grupo nginx con www-data. en Ubuntu).

$ sudo chmod 640/etc/nginx/conf.d/.htpasswd $ sudo chown nginx: nginx/etc/nginx/conf.d/.htpasswd

Como mencionamos anteriormente, puede restringir el acceso a su servidor web, un solo sitio web (usando su bloque de servidor) o directorio o archivo específico . Se pueden usar dos directivas útiles para lograr esto:

  • auth_basic. activa la validación del nombre de usuario y la contraseña mediante la “ autenticación básica HTTP. ”.
  • auth_basic_user_file. especifica el archivo de la credencial.

Como ejemplo, mostraremos cómo proteger con contraseña el directorio /var/www/html/protected.

servidor {listen 80 default_server; nombre_servidor localhost; root/var/www/html/; index index.html; ubicación/try_files $ uri $ uri/= 404; location/protected/auth_basic “¡Acceso restringido!”; auth_basic_user_file/etc/nginx/conf.d/.htpasswd;.

Ahora, guarde los cambios y reinicie el servicio Nginx.

$ sudo systemctl restart nginx

La próxima vez que apunte su navegador al directorio anterior ( http://localhost/protected. se le pedirá que ingrese sus credenciales de inicio de sesión (nombre de usuario admin. y la contraseña elegida).

Un inicio de sesión exitoso le permite acceder al contenido del directorio; de lo contrario, obtendrá un error “ 401 Autorización requerida. .

Cómo configurar hosts virtuales basados ​​en nombres (bloques de servidor ) en Nginx

El contexto del servidor permite almacenar y servir múltiples dominios/sitios desde la misma máquina física o servidor privado virtual (VPS). Se pueden declarar varios bloques de servidor (que representan hosts virtuales) dentro del contexto http para cada sitio/dominio. Nginx decide qué servidor procesa una solicitud en función del encabezado de solicitud que recibe.

Demostraremos este concepto utilizando los siguientes dominios ficticios, cada uno ubicado en el directorio especificado:

  • wearetecmint.com-/var/www/html/wearetecmint .com/
  • welovelinux.com-/var/www/html/welovelinux.com/

A continuación, asigne los permisos apropiados en el directorio para cada sitio.

$ sudo chmod-R 755/var/www/html/wearetecmint.com/public_html $ sudo chmod-R 755/var/www/html/welovelinux.com/public_html

Ahora, cree un archivo index.html. de muestra dentro de cada directorio public_html.

www.wearetecmint.com

Esta es la página de índice de www.wearetecmint.com