Cómo configurar el servidor web Nginx en Ubuntu 18.04 Bionic Beaver Linux

Cómo configurar el servidor web Nginx en Ubuntu 18.04 Bionic Beaver Linux

Objetivo

Aprenda a instalar y configurar el servidor web NGINX en Ubuntu 18.04 Beaver Bionic

Requisitos

  • Permisos de raíz

Convenciones

  • # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz
    directamente como usuario raíz o mediante el uso de sudo dominio
  • ps - Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Otras versiones de este tutorial

Ubuntu 20.04 (fosa focal)

Introducción

El servidor web NGINX, junto con Apache, es uno de los servidores web más conocidos y utilizados del mundo. Generalmente es menos hambriento de recursos que Apache, y también se puede utilizar como un proxy inverso.

En este tutorial veremos cómo instalar y configurar el servidor web Nginx en Ubuntu 18.04 Beaver Bionic.

Paso 1 - Instalación

Instalación de Nginx en Ubuntu 18.04 es muy fácil, solo necesitamos usar apt-get:

$ sudo apt-get update && sudo apt-get install nginx

El primer comando sincroniza nuestra máquina con repositorios de Ubuntu, mientras que el segundo realmente instala el paquete NGINX. Pocos segundos y el servidor se instalará en nuestro sistema. Los scripts de instalación también se encargarán de iniciar el servicio NGINX.

Podemos verificar fácilmente que el servicio se ejecuta utilizando el siguiente comando Linux:

$ sudo systemctl is-activo nginx

El comando anterior volverá activo Si el servicio está activo: de hecho, si señalamos el navegador a la dirección del servidor o a hostil Si estamos operando desde la misma máquina, debemos visualizar la página de bienvenida de Nginx:

Página de bienvenida Nginx

Paso 2 - Configuración de firewall

Para que nuestro servidor pueda servir páginas a otras máquinas, debemos configurar el firewall para permitir el tráfico entrante a través del puerto 80 (el valor predeterminado) y el puerto 443 Si queremos usar el https protocolo. El comando exacto para ejecutar para lograr eso, depende del administrador de firewall en uso en la máquina, pero aquí asumiré el UFW se está ejecutando, ya que es el valor predeterminado en Ubuntu.

Primero, verificamos que el firewall esté activo:

$ sudo UFW estado

Si no lo es, puede activarlo ejecutando el siguiente comando Linux:

$ sudo UFW Enable

Sin embargo, tenga cuidado cuando, debido a que el sistema le notificará, activar el firewall podría destruir las conexiones actualmente existentes. Para permitir conexiones entrantes a través del puerto 80, debemos ejecutar:

$ sudo UFW Permitir 80/TCP

Para permitir el puerto 443, en su lugar:

$ sudo UFW Permitir 443/TCP

Finalmente, para visualizar el estado actual del firewall, podemos ejecutar:

$ sudo UFW Estado numerado: Activo a la acción de------- ---- [1] 443/TCP Permitir en cualquier lugar [2] 80/TCP Permitir en cualquier lugar [3] 443/TCP (V6) Permitir en cualquier lugar (V6) [4] 80/TCP (V6) Permitir en cualquier lugar (V6) 

Como puede ver, el comando anterior nos dará una visión general de las reglas configuradas, indexadas por número.

Bloques del servidor NGINX (hosts virtuales)

Los bloques del servidor NGINX son el equivalente de Apache VirtualHosts y se utilizan para ejecutar más de un sitio en la misma máquina del servidor. En una instalación estándar de NGINX, podemos encontrar el valor predeterminado bloque de servidor es /etc/nginx/sites disponible/predeterminado. Echemos un vistazo:

# Configuración de servidor predeterminada # Server escuchar 80 default_server; escuchar [::]: 80 default_server; [… .] root/var/www/html; # Agregar índice.PHP a la lista si está utilizando el índice PHP Index.índice HTML.índice HTM.nginx-debio.html; nombre del servidor _; ubicación /  # Primer intento de servir solicitud como archivo, luego # como directorio, luego volver a mostrar un 404. try_files $ uri $ uri/ = 404;  [.. .] 
Copiar

La anterior es una versión simplificada (acabo de eliminar los comentarios) del bloque Nginx Nginx predeterminado en Ubuntu 18.04. Como puede ver, cada directiva termina con un punto y coma. Lo primero que vemos dentro del Servidor La sección, en las líneas 4-5, son los escuchar directivas. El primero es para IPv4 Mientras que el segundo para IPv6. En realidad esto podría acortarse como escuchar [::]: 80 ipv6only = apagado.

El default_server La directiva establece este bloque de servidor como el predeterminado, lo que significa que se usará si ninguna otra configuración coincide con un nombre solicitado. Esta directiva solo se puede usar en un bloque de servidor a la vez.

El raíz Directiva en la línea 8 Establece la ruta al directorio raíz para el sitio que será atendido por el bloque: es básicamente el equivalente de Apache's Raiz del documento.

El índice La directiva en la línea 11 define los archivos que se pueden usar como índice. Los archivos se verificarán en orden.

En la línea 13, el nombre del servidor La directiva se utiliza para definir el nombre del servidor que se asignará a la configuración, y determina el bloque del servidor que manejará la solicitud. Al definir el nombre del servidor, es posible usar comodines y expresiones regulares. En este caso, el valor proporcionado es _: Esto se usa porque es un valor no válido, y nunca coincidirá con ningún nombre de host real (recuerde que esta configuración es todo).

Finalmente, tenemos el ubicación Directiva en la línea 15: Cambia la forma en que se maneja una solicitud dentro del bloque del servidor. En este caso, la ruta se combinará para las instrucciones que se realizan, es /. La parte del URI a combinar es la después del segmento de host.

Dentro de la ubicación "estrofa", en la línea 18 podemos observar otra directiva, try_files: Verifica la existencia de archivos en el orden especificado, utilizando el primero que se encuentra para cumplir con la solicitud. En este caso, como se sugiere del comentario en la sección, primero intenta coincidir con un archivo, que un directorio. Si nada satisface la solicitud, se mostrará una página 404 al usuario. Observe que la solicitud se representa como la $ uri variable, y lo que lo define como directorio es la barra de corte.



Definición de un bloque de servidor personalizado

Ahora deberíamos crear un bloque de servidor personalizado para servir a un sitio HTML. Como lo primero, crearemos el directorio que servirá como raíz de documento para el bloque, llamémoslo Ejemplo:

$ sudo mkdir/var/www/ejemplo

También necesitamos crear un índice.La página HTML se mostrará cuando llegamos al sitio:

$ Echo "Bienvenido al ejemplo!"| sudo tee/var/www/ejemplo/index.html> /dev /null

Una vez hecho, podemos crear un bloque de servidor en el /etc/nginx/sitios disponible Directorio, para consistencia, lo nombraremos "Ejemplo":

servidor escuchar 80; root/var/www/ejemplo; índice índice.html; server_name www.ejemplo.Lan;  
Copiar

Para probar que nuestra configuración es correcta y no contiene ningún error de sintaxis, podemos ejecutar el siguiente comando Linux:

$ sudo nginx -t

Ahora, dado que no tenemos un servidor DNS en su lugar, para enviar una solicitud a nuestro servidor con el nombre especificado, debemos agregar una entrada en el /etc/huéspedes Archivo de la máquina del cliente. En este caso, la dirección de la máquina que estoy usando como servidor (en un entorno de host virtual) es 192.168.122.89, por lo tanto:

# El archivo Client /etc /hosts [.. .] 192.168.122.89 www.ejemplo.lan 
Copiar

Antes de activar nuestro nuevo bloque de servidor, tenemos la oportunidad de verificar que la configuración predeterminada de hecho funcione como una capatada predeterminada. Si ahora navegamos a "www.ejemplo.LAN ”de la máquina del cliente donde acabamos de agregar la entrada de hosts, podemos ver que el servidor responderá a nuestra solicitud con la página Nginx predeterminada (ya que el nuevo bloque aún no está activado).

Para activar nuestro bloque de servidor, debemos crear un enlace simbólico a partir de la configuración que escribimos /etc/nginx/sitios disponible a /etc/nginx/sitios habilitado:

$ sudo ln -s/etc/nginx/sites-disponible/ejemplo/etc/nginx/sitios habilitado

Después de eso, necesitamos reiniciar Nginx:

$ sudo systemctl reiniciar nginx

En este punto, si navegamos a "www.ejemplo.lan ”, deberíamos ver nuestra página no muy complicada:

Ejemplo de página predeterminada

Usando SSL

Para usar SSL, básicamente tenemos dos opciones: obtener un certificado de una autoridad de certificado o usar un certificado autofirmado. En nuestro primer ejemplo, vamos a generar un certificado por nuestra cuenta. Ejecute el siguiente comando de Linux para continuar:

$ sudo openssl req -x509 \ -days 365 \ -sha256 \ -newkey rsa: 2048 \ -nodes \ -keyout/etc/ssl/private/ejemplo.clave \ -out/etc/ssl/certs/ejemplo -cert.pem 
Copiar

Con este comando generamos un certificado autoestimado válido por 365 días y una clave RSA de 2048 bits. El certificado y la clave se guardarán en /etc/ssl/certs/ejemplo-cert.pem y /etc/ssl/private/ejemplo.llave archivos respectivamente. Simplemente responda las preguntas que se harán, prestando especial atención al ingresar al FQDN: debe coincidir con el dominio que usará el certificado para que funcione correctamente.

Está a punto de que se le solicite que ingrese información que se incorporará a su solicitud de certificado. Lo que está a punto de ingresar es lo que se llama un nombre distinguido o un DN. Hay bastantes campos, pero puede dejar algo de blanco para algunos campos, habrá un valor predeterminado, si ingresa '.', el campo se dejará en blanco. ----- Nombre del país (código de 2 letras) [Au]: Nombre de estado o provincia (nombre completo) [algún estado]: Nombre de la localidad (por ejemplo, ciudad) []: Nombre de la organización de Milán (por ejemplo, empresa) [Internet Widgits Pty Ltd] : Daño Inc. Nombre de la unidad organizacional (por ejemplo, sección) []: Nombre común (E.gramo. servidor fqdn o su nombre) []: www.ejemplo.Dirección de correo electrónico de LAN []: 

Ahora que tenemos nuestro certificado y clave, debemos modificar nuestra configuración del bloque de servidor, para que se convierta en:

servidor escuchar 443 ssl; server_name www.ejemplo.Lan; ssl_certificate/etc/ssl/certs/ejemplo-cert.pem; ssl_certificate_key/etc/ssl/private/ejemplo.llave; root/var/www/ejemplo; índice índice.html;  
Copiar

Como puede ver, modificamos el escuchar Directiva en la línea 2, usando el puerto 443 y también habilitando el ssl Parámetro, luego agregamos dos nuevas directivas, en las líneas 4-5: ssl_certificate y ssl_certificate_key, que apunta respectivamente al certificado y la ubicación de la clave del certificado.

Después de reiniciar el servicio NGINX, si ahora navegamos a https: // www.ejemplo.lan Deberíamos ver la advertencia emitida por el navegador, debido al hecho de que el certificado es autofirmado. Sin embargo, nuestras configuraciones están funcionando y estamos utilizando una conexión encriptada:

Advertencia de certificado no válido

Usando vamos en cifrado

La alternativa a los certificados autofirmados son los certificados emitidos por un tercero verificado. Si bien podemos comprar un certificado de una autoridad de certificado, también tenemos la opción de usar "Vamos a encrypt!".

"Vamos en cifrado" es una autoridad de certificado gratuita y abierta que nos permite obtener automáticamente un certificado confiable por el navegador utilizando el CUMBRE Protocolo y un agente de administración de certificados que se ejecuta en el servidor. La única condición es poder demostrar que tenemos control sobre el dominio que queremos usar el certificado para.

Para usar el servicio, lo primero que debe hacer es instalar el certbot Cliente ACME y el complemento específico de NGINX:

$ sudo apt-get update && apt-get install certbot python-certbot-nginx

Obtener un certificado es bastante simple:

$ sudo certbot - -nginx -m -d 

Obviamente, para que esto funcione, el dominio debe apuntar correctamente a nuestra IP de servidor de acceso público. CERTBOT nos pedirá que respondamos algunas preguntas para ajustar la configuración del sitio, y si todo va bien, el certificado y la clave se guardarán en el /etc/letsencrypt/live/ directorio. CERTBOT también aplicará los cambios necesarios al bloque del servidor y recargará el servicio.

Conclusiones

Instalamos el servidor web Nginx en Ubuntu 18.04, vi cómo abrir los puertos de firewall necesarios, examinó el bloque de servidor Ubuntu predeterminado y creó una configuración personalizada. Finalmente, generamos un certificado autofirmado e implementamos las modificaciones necesarias en el bloque del servidor para usar el protocolo HTTPS.

Como alternativa, consideramos implementar "Vamos en cifrado!", Que puede proporcionarnos un certificado reconocido sin costos. No dude en hacer ninguna pregunta y visite la documentación oficial de Nginx para obtener información más detallada.

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Ubuntu 20.04 trucos y cosas que quizás no sepas
  • Ubuntu 20.04 Guía
  • Ubuntu 20.04 Hadoop
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Los 8 mejores entornos de escritorio de Ubuntu (20.04 fosa focal ..
  • Lista e instalación de clientes FTP en Ubuntu 20.04 Linux ..
  • Ubuntu 20.04: WordPress con instalación de Nginx
  • Cómo migrar apache a nginx convirtiendo virtualhosts en ..