Guía completa paso a paso para instalar y configurar un servidor web Nginx en un sistema Ubuntu 20.04
Nginx es un servidor web proxy inverso de código abierto y popular disponible en múltiples plataformas. El software fue desarrollado por Igor Sysoev como una solución al problema de C10K y lanzado por primera vez en 2004. El problema de C10K es el problema de manejar diez mil clientes al mismo tiempo, lo cual no era fácil a principios de la década de 2000.
En este tutorial, veremos cómo instalar y configurar Nginx en Ubuntu 20.04 LTS.
Prerrequisitos
Un sistema con Ubuntu 20.04 instalado y un sudo
usuario. Además, no necesita tener otro servidor web como Apache ejecutándose en el puerto 80 o 443.
Instalación de Nginx
Nginx está disponible en el repositorio de Ubuntu 20.04 y apto
el administrador de paquetes se puede utilizar para instalarlo. Entonces, para instalar Nginx, abra la terminal usando ctrl + alt + t
y correr:
sudo apt update && sudo apt install nginx
La instalación se completará pronto y el demonio Nginx se iniciará en segundo plano automáticamente. Entonces, para verificar el estado de Nginx, ejecute:
sudo systemctl estado nginx
Después de ejecutar el comando anterior, debería obtener el estado de Nginx como activo (corriendo)
en verde como se ve a continuación.
Configuración de Ubuntu Firewall (UFW)
De forma predeterminada, los puertos salientes HTTP (80) y HTTPS (443) están cerrados en Ubuntu 20.04. Además, el demonio de firewall predeterminado ufw
está deshabilitado porque todos los puertos están cerrados.
Por lo tanto, para acceder al servidor Nginx desde otros sistemas, deberá habilitar el ufw
y configúrelo correctamente para permitir el tráfico en el puerto 80
y 443
. Antes de habilitar ufw
, sepa que si está configurando Nginx en un servidor remoto, primero actualice el ufw
reglas para permitir ssh
mediante la ejecución:
sudo ufw permitir ssh
El comando anterior permite ssh
acceso al servidor remoto, sin permitir ssh
se le bloqueará el acceso al servidor remoto.
Después de habilitar ssh
acceso, puede habilitar el ufw
demonio de firewall ejecutando:
sudo ufw habilitar
Ahora, debe cambiar las reglas del firewall para permitir los puertos HTTP y HTTPS para que Nginx pueda atender el tráfico web. Para cambiar las reglas, ejecute:
sudo ufw permite 'Nginx completo'
Nginx completo
permite puertos HTTP y HTTPS para el tráfico entrante y saliente de todas las direcciones IP.
Después de eso, verifique si las reglas se agregaron correctamente a ufw
firewall ejecutando el comando:
estado de sudo ufw
El comando anterior generará las reglas que agregamos a ufw
demonio de firewall.
Conectarse al servidor Nginx
Ahora que hemos instalado Nginx y configurado ufw
Para permitir el tráfico web entrante HTTP y HTTPS, debería poder acceder al servidor Nginx utilizando la dirección IP del servidor.
Si no conoce la dirección IP del servidor, use el siguiente comando para recuperarla fácilmente.
ip addr show eth0 | grep inet | awk '{imprimir $ 2; } '| sed 's /\/.*$//'
Una vez que tenga la dirección IP, péguela en su navegador y presione enter.
// su-ip-servidor
Si todo se configuró correctamente, debería poder ver la página web "¡Bienvenido a nginx!".
Archivos y directorios de Nginx
Ahora que tenemos Nginx instalado y ejecutándose en su servidor. Echemos un vistazo a algunos de los archivos y directorios importantes de Nginx que tendrá que usar para configurar su sitio web / aplicación web.
Contenido del servidor web
Puede configurar cualquier ubicación que desee que sea su directorio raíz para su bloque de servidor. El HTML predeterminado de Nginx directamente es / var / www / html
, es donde se encuentra la página de "bienvenida" a la que accedimos anteriormente.
Otras ubicaciones que generalmente se usan como directorio raíz para dominios incluyen:
/casa//
/ var / www / html /
/optar/
Archivos de configuración de Nginx
Todos los archivos de configuración de Nginx se encuentran en / etc / nginx
directorio. Veamos algunos de los archivos importantes que necesitamos para configurar un dominio básico.
/etc/nginx/nginx.conf
: Este archivo contiene toda la configuración necesaria para ejecutar Nginx./ etc / nginx / sites-available /
: Este directorio tiene toda la configuración del bloque de servidor de los dominios, pero actualmente no están habilitados / implementados y, por lo tanto, los clientes no pueden acceder a ellos./ etc / nginx / sites-enabled /
: Este directorio contiene los dominios actualmente activos / habilitados accesibles por los clientes. Para habilitar un dominio, necesitamos vincular el archivo de configuración del dominio desdesitios disponibles
alsitios habilitados
directorio./ etc / nginx / snippets
/: En este directorio, podemos almacenar segmentos de configuración potencialmente reutilizables. Ahorra mucho tiempo en el entorno de producción debido al hecho de que puede hacer que los segmentos / bloques de configuración sean reutilizables.
Registros del servidor
Nginx registra los eventos / actividades y los almacena en archivos de registro en el / var / log / nginx
directorio. Nginx registra actividades en estos archivos:
/var/log/nginx/access.log
: Este archivo registra los clientes que han accedido al servidor Nginx. Los detalles incluyen la dirección IP del cliente, la hora y la fecha, el navegador utilizado para acceder al servidor y el sistema operativo./var/log/nginx/error.log
: Este archivo registra los errores encontrados por el servidor Nginx mientras se ejecuta.
Entonces, en esta sección, hemos visto brevemente algunos de los archivos y directorios importantes de Nginx que son suficientes para comenzar.
Configurar bloques de servidor
Ahora que tenemos algunos conocimientos básicos sobre los archivos y el servidor Nginx, estamos listos para configurar nuestro propio bloque de servidor. Los bloques de servidor son similares a los hosts virtuales de Apache.
Veremos cómo crear un bloque de servidor y demostraremos que usaremos example.com
como dominio en proceso de creación.
💡 Reemplazar example.com
con su nombre de dominio.
Antes de comenzar a configurar los Bloques de servidor, necesitamos crear un directorio que sirva como directorio raíz para el contenido del sitio web. Vamos a crear /var/www/example.com/html
directorio para dominio usando mkdir
mando.
sudo mkdir -p /var/www/example.com/html
El -pags
La opción creará todos los directorios principales necesarios. Es decir, creará example.com
un directorio principal para html
si no existe.
Cambie la propiedad del directorio con el $ USUARIO
Variable ambiental:
sudo chown -R $ USER: $ USER /var/www/example.com/html
A continuación, cree un sencillo index.html
archivo al que se accederá cuando visite el dominio que se está configurando. Esto es solo para fines explicativos.
nano /var/www/example.com/html/index.html
Pegue el siguiente contenido en el archivo que acabamos de crear en el servidor.
¡Bienvenido a example.com! ¡Yo! ¡El example.com es accesible!
imprenta ctrl + o
para escribir y guardar el index.html
archivo y luego, presione ctrl + x
salir nano
editor.
Ahora, finalmente, podemos pasar a la creación de un bloque de servidor, de modo que Nginx pueda servir al index.html
cuando algún usuario va a example.com
. Entonces, para crear un bloque de servidor, necesitamos crear un archivo de configuración llamado example.com
en sitios disponibles
directorio. Para hacerlo, usamos nano y ejecutamos:
sudo nano /etc/nginx/sites-available/example.com
Y luego, escriba o copie / pegue la siguiente configuración. Entonces presione ctrl + o
e ingrese para escribir y guardar. Del mismo modo, presione ctrl + x
para cerrar el editor nano.
servidor {escuchar 80; escuchar [::]: 80; nombre_servidor example.com www.example.com; root /var/www/example-domain.com/html; index index.html; ubicación / {try_files $ uri $ uri / = 404; }}
La configuración anterior es similar a la configuración predeterminada del bloque del servidor, hemos cambiado raíz
declaración para apuntar a nuestro nuevo directorio raíz y cambió el nombre del servidor
a nuestro nombre de dominio. Mientras que la ubicación{}
La declaración sirve como declaración de captura de errores si no se encuentran los archivos y muestra el error 404 al cliente.
A continuación, podemos habilitar nuestro bloque de servidor para que Nginx sirva example.com
páginas web. Para habilitar nuestro bloque de servidor, necesitamos crear un enlace simbólico de example.com
archivo de sitios disponibles
a sitios habilitados
directorio. Para hacerlo, ejecute:
sudo ln -s /etc/nginx/sites-available/example.com / etc / nginx / sites-enabled
Se creará un enlace en habilitado para el sitio
directorio y ahora example.com
debe estar habilitado. Ahora tenemos dos bloques de servidor habilitados en nuestro servidor Nginx que responderán a la solicitud en función de escucha
y nombre_servidor
directivas guardadas en example.com
configuración del bloque del servidor.
Para comprobar si todos los archivos de configuración son correctos y no hay ningún error de sintaxis, ejecute:
sudo nginx -t
Ahora, finalmente reinicie Nginx para aplicar los cambios ejecutando el siguiente comando:
sudo systemctl reiniciar nginx
Nginx comenzará a servir su bloque de servidor ahora, puede ir a // tu-nombre-de-dominio
y vea su página web en vivo.
Nota: Para que la sección anterior funcione, deberá configurar su propio dominio y reemplazar example.com
con su propio nombre de dominio. Además, deberá configurar DNS para que su dominio apunte a la dirección IP de su servidor Nginx.
Para concluir, hemos visto cómo instalar Nginx, configurar ufw
para permitir el acceso remoto al servidor Nginx, conectado a Nginx de forma remota, se familiarizó con algunos archivos y directorios básicos de Nginx y aprendió cómo configurar un bloque de servidor.
Para conocer y aprender más sobre Nginx, es posible que desee ver la wiki de Nginx.