Cómo instalar NGINX con hosts virtuales y certificado SSL

Cómo instalar NGINX con hosts virtuales y certificado SSL

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

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

Cómo instalar Nginx Web Server

Primero inicie instalando el paquete NGINX desde los repositorios oficiales utilizando su administrador de paquetes como se muestra.

------------ En ubuntu ------------ $ sudo apt actualización $ sudo apt install nginx ------------ En CentOS ------------ $ sudo yum actualización $ sudo yum instalación Epel-libease $ sudo yum instalación nginx 

Después de instalar el paquete NGINX, debe iniciar el servicio por ahora, habilitarlo para iniciar automáticamente en el tiempo de arranque y ver su estado, utilizando los siguientes comandos. Tenga en cuenta que en Ubuntu, Debe iniciarse y habilitarse automáticamente mientras el paquete está preconfigurado.

$ sudo SystemCtl Inicio Nginx $ sudo SystemCTL Habilitar Nginx $ sudo SystemCtl Status Nginx 
Iniciar y verificar el estado de Nginx

En este punto, el servidor web NGINX debe estar en funcionamiento, puede verificar el estado con el comando netstat.

$ sudo netstat -tlpn | grep nginx 
Verifique el estado del puerto NGINX

Si su sistema tiene un firewall habilitado, debe abrir el puerto 80 y 443 permitir Http y Https tráfico respectivamente, a través de él, ejecutando.

------------ En CentOS ------------ $ sudo firewall-cmd --Permanent --Add-puerto = 80/tcp $ sudo firewall-cmd --Permanent --add-puerto = 443/tcp $ sudo firewall-cmd --leload ------------ En ubuntu ------------ $ sudo UFW Permitir 80/TCP $ sudo UFW Permitir 443/TCP $ sudo UFW RELOAD 

El método ideal para probar la instalación de NGINX y verificar si se ejecuta y capaz de servir a las páginas web es abriendo un navegador web y señalando la IP del servidor.

http: // your-ip-address o http: // tu-dominio.comunicarse 

Se debe indicar una instalación de trabajo en la siguiente pantalla.

Verifique la página web de Nginx

Cómo configurar el servidor web 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.confusión en tanto centos como ubuntu.

Nginx está compuesto por módulos controlados por varias opciones de configuración, conocidas como directivas. A directiva puede ser simple (en el nombre de la forma y los valores terminados con un ;) o bloquear (tiene instrucciones adicionales adjuntas usando ). Y una directiva de bloque que contiene otras directivas se llama contexto.

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

Cómo servir contenido estático usando NGINX en modo independiente

En un nivel fundamental, Nginx se puede usar para servir 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.confusión 

Si analiza este archivo de configuración de Nginx, la estructura de configuración debe 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.

usuario nginx; Worker_processes 1;… Error_log/var/log/nginx/error.Log advertir; pid/var/run/nginx.pid; ... eventos ... http servidor .. . … 

La siguiente es una muestra de configuración principal de Nginx (/etc/nginx/nginx.confusión) archivo, donde el bloque HTTP anterior contiene una directiva de inclusión que le dice a NGINX dónde encontrar archivos de configuración del sitio web (configuraciones de host virtuales).

Archivo de configuración nginx
usuario www-data; Worker_processes Auto; pid /run /nginx.pid; eventos trabajador_connections 768; # multi_accept on;  http include/etc/nginx/mime.tipos; APLICACIÓN DE LA APLICACIÓN/OCTETA DEFORT_TYPE; incluir/etc/nginx/mime.tipos; APLICACIÓN DE LA APLICACIÓN/OCTETA DEFORT_TYPE; access_log/var/log/nginx/access.registro; error_log/var/log/nginx/error.registro; SendFile On; #TCP_NOPUSH ON; KeepAlive_TimeOut 65; #gzip on; incluir/etc/nginx/conf.d/*.conf;  

Tenga en cuenta que en Ubuntu, También encontrará una directiva de incluido adicional (incluir/etc/nginx/sites-habilitado/*;), donde el directorio /etc/nginx/sitios habilitado/ almacena enlaces simbólicos a los archivos de configuración de los sitios web creados en /etc/nginx/sitios disponible/, para habilitar los sitios. Y eliminar un enlace simbólico deshabilita ese sitio en particular.

Según su fuente de instalación, encontrará el archivo de configuración del sitio web predeterminado en /etc/nginx/conf.d/predeterminado.confusión (Si instaló desde el funcionario Nginx repositorio y Epel) o /etc/nginx/sites-habilitado/predeterminado (Si instaló desde repositorios de Ubuntu).

Este es nuestro bloque de servidor NGINX predeterminado de muestra ubicado en /etc/nginx/conf.d/predeterminado.confusión en el sistema de prueba.

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

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

  • escuchar: especifica el puerto el servidor escucha.
  • nombre del servidor: Define el nombre del servidor que puede ser nombres exactos, nombres de comodín o expresiones regulares.
  • raíz: Especifica el directorio del que NGINX servirá páginas web y otros documentos.
  • índice: Especifica los tipos (s) de los archivos de índice que se deben servir.
  • ubicación: utilizado para procesar solicitudes de archivos y carpetas específicos.

Desde un navegador web, cuando señala el servidor utilizando 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 a su registro de acceso (/var/log/nginx/access.registro) con un 200 (OK) Respuesta. En el caso de un error (evento fallido), registra el mensaje en el registro de errores (/var/log/nginx/error.registro).

Prueba el sitio predeterminado de Nginx

Para obtener más información sobre iniciar sesión Nginx, Puede consultar cómo configurar los formatos de registro de acceso o acceso personalizado en Nginx.

En lugar de usar 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 hosts virtuales basados ​​en nombres (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, puede configurar la autenticación HTTP básica. Esto se puede usar esencialmente para restringir el acceso a todo el servidor HTTP, bloques de servidor individuales o bloques de ubicación.

Comience creando un archivo que almacene sus credenciales de acceso (usuario Contraseña) usando el htpasswd utilidad.

 $ yum instalación httpd-tools #rhel/centos $ sudo apt install apache2-utils #Debian/Ubuntu 

Como ejemplo, agregemos el administrador de usuarios a esta lista (puede agregar tantos usuarios como sea posible), donde el -C La opción se utiliza para especificar el archivo de contraseña y el -B Para cifrar la contraseña. Una vez que golpeas [Ingresar], se le pedirá que ingrese la contraseña de los usuarios:

$ 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 el grupo NGINX con datos www 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 - Enciende la validación del nombre de usuario y la contraseña utilizando el "HTTP Autenticación básica"Protocolo.
  • auth_basic_user_file - Especifica el archivo de la credencial.

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

servidor escuchar 80 default_server; server_name localhost; root/var/www/html/; índice índice.html; ubicación / try_files $ uri $ uri / = 404;  Ubicación / protegido / Auth_Basic "Acceso restringido!"; auth_basic_user_file/etc/nginx/conf.d/.htpasswd;  

Ahora, guarde los cambios y reinicie el servicio NGINX.

$ sudo systemctl reiniciar nginx 

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

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

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 de la misma máquina física o servidor privado virtual (VPS). Se pueden declarar múltiples bloques de servidor (que representan hosts virtuales) dentro del contexto HTTP para cada sitio/dominio. Nginx decide qué servidor procesa una solicitud basada en el encabezado de solicitud que recibe.

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

  • wearetecMint.comunicarse - /var/www/html/wearetecMint.com/
  • whovelinux.comunicarse - /var/www/html/whovelinux.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/whovelinux.com/public_html 

Ahora, crea una muestra índice.html Archivo dentro de cada public_html directorio.

  www.wearetecMint.comunicarse   

Esta es la página de índice de www.wearetecMint.comunicarse

A continuación, cree los archivos de configuración de bloque de servidor para cada sitio dentro del /etc/httpd/conf.d directorio.

$ sudo vi/etc/nginx/conf.d/wearetecMint.comunicarse.conf $ sudo vi/etc/nginx/conf.d/whovelinux.comunicarse.confusión 

Agregue la siguiente declaración de bloque del servidor en el wearetecMint.comunicarse.confusión archivo.

wearetecMint.comunicarse.confusión
servidor escuchar 80; server_name wearetecMint.com; root/var/www/html/wearetecMint.com/public_html; índice índice.html; ubicación / try_files $ uri $ uri / = 404;  

A continuación, agregue la siguiente declaración de bloque del servidor en el whovelinux.comunicarse.confusión archivo.

whovelinux.comunicarse.confusión
servidor escuchar 80; server_name WELOVELINUX.com; root/var/www/html/whovelinux.com/public_html; índice índice.html; ubicación / try_files $ uri $ uri / = 404;  

Para aplicar los cambios recientes, reinicie el servidor web NGINX.

$ sudo systemctl reiniciar nginx 

y señalar su servidor web a las direcciones anteriores debería hacerle ver las páginas principales de los dominios ficticios.

http: // wearetecMint.com http: // whovelinux.comunicarse 
Prueba de Nginx Virtual Hosts Sitios web

Importante: Si usted tiene Selinux habilitado, su configuración predeterminada no le permite a NGINX acceder a archivos fuera de ubicaciones autorizadas conocidas (como /etc/nginx para configuraciones, /var/log/nginx para registros, /var/www/html para archivos web, etc ...).

Puede manejar esto deshabilitando Selinux o configurando el contexto de seguridad correcto. Para obtener más información, consulte esta Guía: Uso de Nginx y Nginx Plus con Selinux en el sitio web de Nginx Plus.

Cómo instalar y configurar SSL con Nginx

Ssl Ayuda de certificados para habilitar HTTP seguro (Https) en su sitio, que es esencial para establecer una conexión confiable/segura entre los usuarios finales y su servidor encriptando la información que se transmite, desde o dentro de su sitio.

Cubriremos cómo crear e instalar un certificado autofirmado y generar una solicitud de firma de certificado (CSR) adquirir un certificado SSL de una autoridad de certificado (California), para usar con nginx.

Los certificados autofirmados son gratuitos y son prácticamente buenos para fines de prueba y para servicios internos solo de LAN. Para los servidores de orientación pública, se recomienda utilizar un certificado emitido por una CA (por ejemplo, en cifrado) para mantener su autenticidad.

Para crear un certificado autofirmado, primero cree un directorio donde se almacenen sus certificados.

$ sudo mkdir/etc/nginx/ssl-certs/ 

Luego genere su certificado autofirmado y la clave utilizando el openssl Herramienta de línea de comandos.

$ sudo openssl req -x509 -nodes -days 365 -newkey RSA: 2048 -keyout/etc/nginx/ssl -certs/nginx.Key -Out/Etc/Nginx/SSL -Certs/Nginx.CRT 

Describamos brevemente las opciones utilizadas en el comando anterior:

  • REQ -X509 - muestra que estamos creando un certificado X509.
  • -nodos (no DES) - significa "no cifre la clave".
  • -días 365 - Especifica el número de días que el certificado será válido para.
  • -Newkey RSA: 2048 - Especifica que la clave generada usando el algoritmo RSA debe ser de 2048 bits.
  • -Keyout/etc/nginx/ssl-certs/nginx.llave - Especifica la ruta completa de la tecla RSA.
  • -out/etc/nginx/ssl-certs/nginx.CRT - Especifica la ruta completa del certificado.
Crear certificado y clave SSL para NGINX

A continuación, abra su archivo de configuración de host virtual y agregue las siguientes líneas a una declaración de bloque de servidor escuchando en el puerto 443. Probaremos con el archivo de host virtual /etc/nginx/conf.d/wearetecMint.comunicarse.confusión.

$ sudo vi/etc/nginx/conf.d/wearetecMint.comunicarse.confusión 

Luego agregue la directiva SSL al archivo de configuración NGINX, debe parecer similar a la siguiente.

servidor escuchar 80; escuchar [::]: 80; Escuche 443 SSL; escuchar [::]: 443 ssl; ssl on; ssl_certificate/etc/nginx/ssl-certs/nginx.CRT; ssl_trusted_certificate/etc/nginx/ssl-certs/nginx.CRT; ssl_certificate_key/etc/nginx/ssl-certs/nginx.llave; server_name wearetecMint.com; root/var/www/html/wearetecMint.com/public_html; índice índice.html; ubicación / try_files $ uri $ uri / = 404;  

Ahora reinicie el NGINX y apunte su navegador a la siguiente dirección.

https: // www.wearetecMint.comunicarse 
Consulte el sitio web de Nginx SSL

Si desea comprar un certificado SSL de una CA, debe generar una solicitud de firma de certificado (CSR) como se muestra.

$ sudo openssl req -newkey RSA: 2048 -nodes -keyout/etc/nginx/ssl -certs/ejemplo.comunicarse.Key -Out/Etc/Nginx/SSL -Certs/Ejemplo.comunicarse.CSR 

También puede crear una CSR a partir de una clave privada existente.

$ sudo openssl req -key/etc/nginx/ssl -certs/ejemplo.comunicarse.Key -new -out/etc/nginx/ssl -certs/ejemplo.comunicarse.CSR 

Entonces, necesitas enviar el CSR que se genera a un California Para solicitar la emisión de un certificado SSL firmado por CA. Una vez que reciba su certificado de la CA, puede configurarlo como se muestra arriba.

Leer también: La guía final para asegurar, endurecer y mejorar el rendimiento del servidor web NGINX

Resumen

En este artículo, hemos explicado cómo instalar y configurar NGINX; Cubra cómo configurar el alojamiento virtual basado en nombres con SSL para asegurar las transmisiones de datos entre el servidor web y un cliente.

Si experimentó contratiempos durante su proceso de instalación/configuración de NGINX o tiene alguna pregunta o comentario, use el formulario de comentarios a continuación para comunicarse con nosotros.