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
server
puede 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/site1
parasite1.com
/var/www/site2
parasite2.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
server
parasite1.com
ysite2.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