En esta sección, aprenderemos cómo configurar NGINX de manera básica. Este conocimiento es fundamental para poder utilizar NGINX como servidor web o proxy inverso. Abordaremos los siguientes temas:
- Estructura de Archivos de Configuración
- Configuración del Servidor
- Configuración de Bloques de Servidor
- Configuración de Ubicaciones
- Estructura de Archivos de Configuración
NGINX utiliza archivos de configuración para definir su comportamiento. El archivo principal de configuración es nginx.conf, que generalmente se encuentra en /etc/nginx/nginx.conf en sistemas basados en Unix.
Estructura Básica de nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}Explicación de la Estructura
- user: Define el usuario bajo el cual se ejecuta NGINX.
- worker_processes: Número de procesos de trabajo. Generalmente, se establece en el número de núcleos de CPU.
- error_log: Ubicación del archivo de registro de errores.
- pid: Archivo que contiene el ID de proceso de NGINX.
- events: Configuración de eventos, como el número máximo de conexiones.
- http: Bloque principal para la configuración HTTP.
- include: Incluye otros archivos de configuración.
- log_format: Define el formato del registro de acceso.
- access_log: Ubicación del archivo de registro de acceso.
- sendfile: Mejora el rendimiento de la transferencia de archivos.
- keepalive_timeout: Tiempo de espera para conexiones keep-alive.
- Configuración del Servidor
Dentro del bloque http, podemos definir múltiples servidores utilizando bloques server.
Ejemplo de Configuración de Servidor
http {
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
}Explicación del Bloque server
- listen: Puerto en el que el servidor escucha (por defecto, 80 para HTTP).
- server_name: Nombre del servidor (puede ser un dominio o
localhost). - location: Define cómo se manejan las solicitudes para diferentes rutas.
- root: Directorio raíz para los archivos servidos.
- index: Archivos de índice que se buscan en el directorio raíz.
- error_page: Define páginas de error personalizadas.
- Configuración de Bloques de Servidor
Los bloques de servidor (server) permiten configurar múltiples sitios web en un solo servidor NGINX.
Ejemplo de Múltiples Bloques de Servidor
http {
server {
listen 80;
server_name example.com;
location / {
root /var/www/example.com;
index index.html;
}
}
server {
listen 80;
server_name another-example.com;
location / {
root /var/www/another-example.com;
index index.html;
}
}
}Explicación
- Cada bloque
serverpuede tener su propia configuración delisten,server_name, ylocation. - Esto permite servir diferentes sitios web desde el mismo servidor NGINX.
- Configuración de Ubicaciones
El bloque location se utiliza para definir cómo se manejan las solicitudes para diferentes rutas.
Ejemplo de Configuración de Ubicaciones
server {
listen 80;
server_name example.com;
location / {
root /var/www/example.com;
index index.html;
}
location /images/ {
root /var/www/images;
}
location /api/ {
proxy_pass http://backend_server;
}
}Explicación
- location /: Maneja todas las solicitudes a la raíz del sitio.
- location /images/: Maneja todas las solicitudes a
/images/y sirve archivos desde/var/www/images. - location /api/: Redirige todas las solicitudes a
/api/a un servidor backend.
Ejercicio Práctico
Ejercicio
- Crea un archivo de configuración de NGINX que sirva contenido estático desde dos directorios diferentes:
/var/www/site1parasite1.com/var/www/site2parasite2.com
- Configura una página de error personalizada para el error 404.
Solución
http {
server {
listen 80;
server_name site1.com;
location / {
root /var/www/site1;
index index.html;
}
error_page 404 /404.html;
location = /404.html {
root /var/www/site1;
}
}
server {
listen 80;
server_name site2.com;
location / {
root /var/www/site2;
index index.html;
}
error_page 404 /404.html;
location = /404.html {
root /var/www/site2;
}
}
}Explicación
- Dos bloques
serverparasite1.comysite2.com. - Cada servidor tiene su propio directorio raíz y página de error personalizada.
Conclusión
En esta sección, hemos aprendido la estructura básica de los archivos de configuración de NGINX, cómo configurar servidores y ubicaciones, y cómo manejar múltiples sitios web en un solo servidor NGINX. Con esta base, estamos listos para explorar configuraciones más avanzadas y específicas en los siguientes módulos.
Curso de NGINX
Módulo 1: Introducción a NGINX
Módulo 2: NGINX como Servidor Web
- Sirviendo Contenido Estático
- Listados de Directorios
- Páginas de Error Personalizadas
- Registro y Formatos de Registro
Módulo 3: NGINX como Proxy Inverso
- Introducción al Proxy Inverso
- Configurando un Proxy Inverso
- Balanceo de Carga
- Verificaciones de Salud
