Cómo configurar el servidor web Nginx en Ubuntu 18.04 Bionic Beaver Linux
- 3959
- 245
- Alejandro Duran
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 desudo
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:
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 predeterminadaUsando 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:
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 ..
- « Mira Netflix en Ubuntu 18.04 Bionic Beaver Linux
- Monitoreo del sistema en Ubuntu 18.04 Linux con Stacer »