como-instalar-y-configurar-nginx-en-raspberry-pi

Cómo instalar y configurar Nginx en Raspberry Pi

Nginx es un servidor web de alto rendimiento ampliamente utilizado que es ideal para alojar sitios web, aplicaciones web y servicios en tu Raspberry Pi.

Nginx (pronunciado “engine-x”) es un servidor web y proxy inverso de código abierto que es conocido por su alto rendimiento, bajo consumo de recursos y capacidad de manejar una gran cantidad de conexiones simultáneas.

Una de las cosas que destacan en Nginx es su facilidad para actuar como un proxy inverso y un balanceador de carga, lo que lo convierte en una herramienta muy útil en entornos de alta demanda.

Instalación de Nginx en Raspberry Pi

Para instalar Nginx en tu Raspberry Pi, abrimos una terminal, y ejecutamos el siguiente comando,

sudo apt install nginx

Esperamos que se instale, ya está. ¡Así de fácil! Cuando esté listo, podemos verificar que funciona que Nginx está en ejecución con,

sudo service nginx status

Si en algún momento necesitamos parar, iniciar, o reiniciar Nginx podemos hacerlo con estos comandos

sudo service nginx stop
sudo service nginx start
sudo service nginx restart

Configuración de Nginx

La configuración principal de Nginx se encuentra en el directorio /etc/nginx/. El archivo principal de configuración es /etc/nginx/nginx.conf. Por defecto, tiene una punta como la siguiente.

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	... varias cosas de configuración que omitimos... 
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}

Donde veis que la última línea carga todos los ficheros .conf de la carpeta /etc/nginx/conf.d/ y todos los ficheros de /etc/nginx/sites-available/.

Para mantenerlo todo ordenador, generalmente realizarás la configuración de cada sitio en archivos separados en el directorio /etc/nginx/sites-available/.

Ejemplo de configuración de un Sitio Web

Vamos a ver un ejemplo de configuración de un sitio web básico en Nginx. Con esta configuración, Nginx servirá tu sitio web en el puerto 80 y se encargará de las solicitudes entrantes.

Primero creamos un archivo de configuración en /etc/nginx/sites-available/ para tu sitio web, por ejemplo, mi-sitio:

sudo nano /etc/nginx/sites-available/mi-sitio

Agregamos la configuración del sitio, incluyendo la ruta de la raíz del sitio y el puerto

server {
   listen 80;
   server_name mi-dominio.com www.mi-dominio.com;

   root /var/www/mi-sitio;
   index index.html;

   location / {
	   try_files $uri $uri/ =404;
   }
}

Ahora creamos un enlace simbólico en /etc/nginx/sites-enabled/ para habilitar el sitio.

sudo ln -s /etc/nginx/sites-available/mi-sitio /etc/nginx/sites-enabled/

Podemos verificar que la configuración es correcta con este comando. Si tenemos algún error en la configuración, nos lo mostrará por consola.

sudo nginx -t 

Finalmente, creamos un directorio donde meter los ficheros de nuestra página web.

sudo mkdir /var/www/mi-sitio
sudo nano /var/www/mi-sitio/index.html

Metemos el contenido HTML al archivo index.html. Finalmente reiniciamos Nginx para aplicar la configuración,

sudo service nginx restart

Ejemplo de Nginx como Proxy Inverso

Vamos a ver otro ejemplo sobre cómo usar Nginx como proxy inverso para redirigir el tráfico a diferentes servicios en tu Raspberry Pi.

Por ejemplo, imaginemos que queremos configurar Nginx para redirigir el tráfico HTTP al servidor web de Node.js que se ejecuta en otro puerto.

Aquí hay un ejemplo de configuración en /etc/nginx/sites-available/:

server {
    listen 80;
    server_name mi-dominio.com;

    location / {
        proxy_pass http://127.0.0.1:3000;  # Redirige el tráfico a un servidor Node.js en el puerto 3000
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Ahora, simplemente hacemos lo mismo que antes. Creamos un enlace simbólico en /etc/nginx/sites-enabled/ para habilitar el sitio.

sudo ln -s /etc/nginx/sites-available/mi-sitio /etc/nginx/sites-enabled/

Verificamos que la configuración es correcta,

sudo nginx -t 

Finalmente reiniciamos Nginx para aplicar la configuración,

sudo service nginx restart