Desarrollo Web

Nginx sin bloat: configuración limpia para producción

05 oct 2024 10 min lectura 169 visitas Actualizado: 05 jul 2026
Nginx sin bloat: configuración limpia para producción

Partimos de cero

La mayoría de guías de Nginx copian y pegan directivas sin entenderlas. Nosotros escribimos solo lo que el proyecto necesita.

nginx.conf global

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

events {
    worker_connections 1024;
    multi_accept on;
}

http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    server_tokens off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    # Gzip solo para lo que sirve
    gzip on;
    gzip_types text/plain text/css application/json application/javascript text/xml;
    gzip_min_length 256;

    # Logs en formato JSON para analizar
    log_format json escape=json
      '{"time":"$time_iso8601","remote":"$remote_addr","method":"$request_method","uri":"$request_uri","status":$status,"bytes":$body_bytes_sent,"ua":"$http_user_agent"}';

    include /etc/nginx/conf.d/*.conf;
}

Virtual host tipo

server {
    listen 443 ssl http2;
    server_name ejemplo.com;
    root /var/www/ejemplo/public;
    index index.html;

    ssl_certificate     /etc/letsencrypt/live/ejemplo.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ejemplo.com/privkey.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;

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

    # Sin location para .well-known si no se necesita
    # Sin php si es estático
    # Sin proxy si no hay backend
}

La regla de oro

Si no sabes para qué sirve una directiva, no la incluyas. Un archivo de configuración de 15 líneas bien entendidas vale más que uno de 80 copiado de StackOverflow.