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