Nginx es el software mas popular para montar servidores web ya que es un programa muy liviano en cuanto a uso de recursos computacionales pero muy potente a la hora de servir multiples peticiones concurrentes.
Se pronuncia Engine-X y lo veremos en conjunto con linux LEMP (Linux-eNginx-MySQL-PHP) ó LEPP (Linux-eNginx-Postgres-PHP).
Instalación de Nginx
Actualiza la lista de paquetes disponibles
sudo apt update
Instalar Nginx
sudo apt install nginx -y
Corroborar estado del servicio Nginx en la maquina
sudo service nginx status
Si Nginx esta correctamente instalado y activo en el sistema al ejecutar el comando anterior en la consola debemos ver un mensaje como el siguiente:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Thu 2024-10-10 16:35:23 UTC; 3 weeks 6 days ago
Docs: man:nginx(8)
Main PID: 497 (nginx)
Tasks: 3 (limit: 1107)
Memory: 11.1M
CPU: 1min 11.122s
CGroup: /system.slice/nginx.service
├─497 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
├─502 "nginx: worker process"
└─503 "nginx: worker process"
Oct 10 16:35:22 ip-172-31-46-146 systemd[1]: Starting nginx.service - A high performance web server and a reverse proxy server...
Corroborar el funcionamiento de nuestro servidor web
Al visitar la Ip publica de nuestro servidor web deberíamos poder ver la página por defecto de Nginx.
En caso de no conocer nuestra Ip publica podríamos intentar averiguarla haciendo una petición web al sitio: https://icanhazip.com
curl -4 icanhazip.com
Visitando la Ip publica de nuestro servidor deberíamos ver una página como la siguiente:
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to
nginx.org.
Commercial support is available at
nginx.com.
Thank you for using nginx.
En caso de problemas
En caso de que no podamos ver el mensaje de bienvenida de Nginx puede que el software no este activado o que el Firewall nos este bloqueando. De ser así hay que volver y verificar que el programa este correctamente instalado y habilitado en el servidor y que el acceso web no este bloqueado por el Firewall.
También puede ser el caso de que al visitar la Ip del servidor esta halla sido cacheada y se muestre un mensaje de error aunque ya todo este funcionando correctamente.
Trabajar con Nginx
Tras haber configurado Nginx correctamente ya podemos trabajar con el, incluso sin configurar mas cosas, ya que por defecto el software permite acceso web a los documentos y archivos dentro del directorio /var/www/html de nuestra maquina Linux, por lo que podemos empezar a subir cosas aquí, pero lo recomendable será proceder por otro lado.
Lo normal tras instalar Nginx será configurar otras cosas antes de empezar a montar archivos web, entre esas otras acciones estarían:
- Agregar un nombre de dominio
- Configurar un firewall para mejorar la seguridad del servidor
- Añadir un certificado SSL para proteger los datos que entren y salgan del sitio web
- Instalar y configurar PHP
- Crear mas archivos de configuración para gestionar mas de un sitio web en la misma maquina (Virtual hosts)
- Realizar otras configuraciones de Nginx para casos en particular (Balanceo de carga, proxy inverso, redirección de trafico, etc)
Añadir mas sitios a Nginx
En una misma maquina de Linux podemos procesar peticiones de multiples dominios o subdominios, para ello debemos crear archivos de configuración de Nginx para indicarle que hacer cuando le lleguen peticiones para dichos sitios web, a continuación veremos paso por paso sobre este proceso.
Preparar la ubicación física del nuevo sitio
Para poder añadir un sitio a Nginx primero deberíamos preparar los archivos dentro de la maquina, lo normal es añadir un nuevo directorio para cada proyecto diferente dentro del directorio /var/www, cada nuevo directorio debe contar con los permisos adecuados para poder ser servido por Nginx a internet de forma publica, y en el directorio del proyecto debemos montar los archivos de nuestro sitio web, para poder hacerlo podríamos subirlos por Git, por FTP o por SSH.
Crear directorio para el sitio web
sudo mkdir -p /var/www/newproyect/public
Crear un archivo index (Opcional)
Si aún no vas a subir los archivos finales del sitio web te aconsejo crear un archivo index.html con algún mensaje de sitio en construcción, para ello usaremos el comando nano, luego escribiremos algo de HTML básico y guardaremos el archivo con CTRL+X
sudo nano /var/www/newproyect/public/index.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Sitio en construcción</title>
</head>
<body>
<h1>Nuevo sitio web en construcción, vuelva pronto</h1>
</body>
</html>