Tool.Yun
Herramientas practicas para desarrolladores
CSV a datos
Codificador/decodificador de cadenas Base64
Codificador/decodificador de matriz hexadecimal Base64
Consumo y gasto de energía en la computadora
Conversor de caracteres Unicode a entidades Java
Conversor de coordenadas geográficas
Conversor de formato de variables de entorno
Conversor de propiedades
Convertidor dBm mW
Convertidor de archivos Base64
Convertidor de base entera
Convertidor de muchas unidades
Convertidor de números romanos
Convertidor de unidades de almacenamiento de datos
Excel a datos
Generador de ULID
Normalizador de correo electrónico
Texto a Unicode
Texto a binario UTF-8
Torrente a Magnet
Analizador JWT
Analizador SAML
Analizador de certificados/claves
Bcrypt
Bytes de Niceware a frase de contraseña
Calculadora de CRC
Cifrado PGP
Cifrado RSA
Cifrado de archivos PGP
Cifrado de cadenas Jasypt
Cifrar/descifrar texto
Codificador/decodificador Bech32
Conversor de certificados SSL
Criptografía AGE
Descifrado de Ansible Vault Crypt
El secreto compartido de Shamir
Firmante y verificador RSA/DSA/ECDSA
Generador JWT
Generador de HMAC
Generador de RSE
Generador de certificados X509
Generador de claves PGP
Generador de pares de claves ECDSA
Generador de pares de claves Ed25519
Generador de pares de claves RSA
Hasher Argon2
Hasher de archivos
Paseto/PASERK Local
Paseto/PASERK Público/Privado
Texto hash
Decodificador de código QR
Generador de códigos QR
Generador de códigos QR de WiFi
Generador de códigos de barras
Generador de información de contacto QR
Lector de código de barras
Validador de GTIN
tools.epc-qrcode-generator.name
Analizador y formateador de teléfonos
Buscador ISO 639
Buscador de códigos de país ISO 3166
Búsqueda Unicode
Calculadora de IMC
Calculadora de SLA
Calculadora de ritmo de carrera
Compatibilidad de licencias de software
Comprobador de tarjetas de crédito
Conversor de RMB a mayúsculas
Conversor de divisas
Convertidor de calendario
Diccionario en línea
Directrices de iluminación del IES
Explicar el comando Shell
Validador de Luhn
Validador de números de IVA
Validador y analizador IBAN
Validador y analizador ISBN
Conversor de cotizaciones
Convertidor de archivos HEX
Convertidor de rizos
Descompresor/desempaquetador de Javascript
Divisor de archivos
Embellecedor de Javascript
Embellecer y formatear SQL
Embellecimiento y minimización de CSS/JS
Escaper de cuerdas
Falsificador de datos
Generador de GitIgnore
Generador de atributos de Gita
Generador de cadenas de conexión a bases de datos
Generador de correo electrónico
Generador de creación de bases de datos
Generador de faviconos
Generador de metagráficos abiertos
Generador de parámetros SQL
Generador de scripts para pruebas de carga K6
Generador de secretos de Django
Generador de tablas de bases de datos
INSERTAR JSON a SQL
Json a Protobuf
Json a Typescript
Minificador de SQL
Ofuscador de Javascript
Probador de Picomatch
Probador de escape ANSI
Probador de interfaz de usuario Swagger
Pruebas de API
Resaltador de código/scripts
Stacktrace más bonito
Temporizador Pomodoro
editor de comandos CLI
Conversor de Docker Compose a Docker Run
Conversor de Docker Run a Docker Compose
Conversor de formato de Docker Compose
Creador de Traefik Docker Compose
Descargador de imágenes de Docker
Docker Compose a Quadlets
Docker Compose a archivo .env
Docker Compose para Kubernetes
Ejecución de Docker en Kubernetes
Ejecución de Docker en Quadlets
Etiquetas de Docker Pangolin
Generador de RBAC para Kubernetes
Generador de etiquetas de Dockerfile
Inspeccionar Docker para ejecutar Docker
Validador de Docker Compose
Alarma de crono/día laborable
Alarma de tiempo
Analizador de archivos ICAL
Calculadora TTL
Calculadora de ETA
Calculadora de duración
Calculadora de días
Calculadora de fechas y duraciones
Conversor de fecha y hora
Conversor de números de semana
Conversor de zona horaria
Cronómetro
Cuenta atrás
Fusión de iCal
Generador ICAL
¿Que día?
Calculadora de amortización
Analizador de URL
Analizador de cookies
Analizador de correo electrónico
Analizador de correo electrónico rebotado
Analizador de informes DMARC
Analizador de mensajes de Outlook
Buscador de propiedades LDAP de ActiveDirectory
Calculadora de resistencias
Codificador/decodificador hexadecimal
Consola de puerto serie
Convertidor GZip/Deflate
Convertidor SMART Raw
Convertidor de ObjectId de MongoDB
Convertidor de codificación MIME
Convertidor de números de punto flotante
Convertidor de orden medio-endian
Decodificador EMV TLV
Decodificador de URL compartidas de SharePoint
Decodificador de transacciones ETH
Descodificador de Outlook Safelink
Detector de tipo de archivo
Detector/decodificador de juegos de caracteres de texto
Enmascarador de datos sensibles
Expansor de URL cortas
Extractor de ID de copos de nieve
Generador de TCPDump
Generador de URL
Generador de comandos de Nmap
Hoja de trucos para el cableado RJ45 Cat6
Información del código clave
Lector de archivos de Parquet
Probador HTTPS
Probador de DNS
Probador de propagación DNS
Probador de píxeles muertos
键盘测试器
Conversor de unidades de volumen
Convertidor de aceleración
Convertidor de caudal volumétrico
Convertidor de energía alimentaria
Convertidor de frecuencia
Convertidor de iluminancia
Convertidor de potencia
Convertidor de prefijos del SI
Convertidor de temperatura
Convertidor de unidades angulares
Convertidor de unidades de energía
Convertidor de unidades de fuerza
Convertidor de unidades de longitud
Convertidor de unidades de masa
Convertidor de unidades de presión
Convertidor de unidades de área
Convertidor de velocidad
Ordenador de fitness
Convertidor UUID
Generador de UUID
Generador de contraseñas
Generador de contraseñas BIP39
Generador de contraseñas de Diceware
Generador de código PIN
Generador de códigos OTP
Generador de nanoIDs
Generador de numerónimos
Generador de tokens
generador de números aleatorios
Hoja de referencia de Docker
Hoja de referencia de Docker Compose
Hoja de referencia de Dockerfile
Hoja de referencia de confirmación semántica de Git
Hoja de referencia de expresiones regulares comunes
Hoja de referencia de selectores CSS
Hoja de referencia de sintaxis XPath
Hoja de referencia de sintaxis de JSONPath
Hoja de trucos de Bash
Hoja de trucos de Docker SWARM
Hoja de trucos de Git
Hoja de trucos de Jq
Hoja de trucos de Markdown
Hoja de trucos de Nano
Hoja de trucos de Nginx
Hoja de trucos de PowerShell
Hoja de trucos de Sed
Hoja de trucos de VIM
Hoja de trucos de comandos de pantalla
Hoja de trucos de expresiones regulares
Hoja de trucos del comando TMUX
Hoja de trucos del comando Zellij
Hoja de trucos del comando chmod
Hoja de trucos para K8
Comparación de imágenes
Conversor de formatos de imagen
Convertidor HEIC
Convertidor ICO/PNG
Eliminar EXIF
Eliminar el fondo de la imagen
GIF a MP4
Grabadora de cámara
Imagen a SVG (potrace)
Inversor de color de imagen
Lector de calidad de imágenes EXIF/Metadatos/GPS/JPEG
Marcador de agua
OCRizar imágenes y PDF
Recortar imagen
Redimensionador de imágenes
Vista previa de SVG
Analizador de tamaño JSON
Aplanador/desplanificador de JSON
CSV a JSON
Consulta JSON
Convertidor de JS a JSON
Convertidor de JSON a JS
Convertidor de JSON a YAML
Convertidor de cadenas JSON
Código JSON a PHP
DDL de JSON a SQL
Diferencia JSON
Editor JSON
Embellecer y formatear JSON
Entidad JSON a Java
Escaper/Unescaper de JSON
Fusión JSON
JSON Linter
JSON a .env
JSON a C#
JSON a CSV
JSON a MessagePack
JSON a TOML
JSON a TS
JSON a XML
JSON a datos
JSON a objeto
JSON para llevar
Json a PHP-Array
Json a Python
Json a esquema
Maestro de clasificación JSON
Minificar JSON
ObjGen a JSON
PHP-Array a JSON
Paquete de mensajes a JSON
Probador de rutas Jq/JSON
tools.json-patch.name
Lanzador de monedas
Rueda de la fortuna
Selector de tarjetas
Tirador de dados
Calculadora binaria
Calculadora de propinas
Conversor de formatos matemáticos
Evaluador de matemáticas
OCR matemático
Visualizador de curvas trigonométricas/de ecuaciones
Calculadora de distancia geográfica
Calculadora de porcentajes
Calculadora de relación de aspecto
Constructor de puntos de referencia
Cifrado de PDF
Compresor de PDF
Comprobador de firmas PDF
Concatenador de PDF
Descifrar y desbloquear PDF
Extractor de páginas PDF
Extractor de texto PDF
HTML a PDF
Linealización de PDF/FastWeb
Generador de expresiones Cron
Analizador de la fortaleza de las contraseñas
Autorización SIP
Búsqueda de dirección MAC
Calculadora Chmod
Calculadora RAID
Calculadora RAID ZPOOL
Calculadora de HDD
Calculadora de confiabilidad RAID
Calculadora de exclusión de subredes IP
Calculadora de rango de CIDR a IPv4/6
Calculadora de rango de IPv4/6 a CIDR(s)
Calculadora de subredes IPv4
Calculadora de subredes IPv6
Calculadora de velocidad de transferencia de datos
Calculadora visual de subredes
Comprobador DNSBL
Comprobador de Whois
Comprobador de puertos TCP/UDP
Consultas DNS
Consultas DNS/RDAP de Cloudflare
Convertidor de Punycode
Convertidor de direcciones IPv4
Convertidor de direcciones IPv6
Convertidor de direcciones MAC
Decodificador ARPA
Decodificador de causa de spam X-VR
Descargador de enlaces múltiples
Desinfectante HAS
Enteros a IPv4/IPv6
Expansor de rango IPv4
Formateador de Nginx
Formateador de comandos de shell
Fuerza de la contraseña de Zxcvbn
Generador Apache LogRotate
Generador FStab
Generador Option43
Generador Rsync
Generador WPA PSK
Generador de DNS BIMI
Generador de DNS DKIM
Generador de DNS DMARC
Generador de DNS PTR
Generador de DNS SPF
Generador de HTAccess
Generador de ULA de IPv6
Generador de autenticación básica
Generador de comandos Curl
Generador de comandos UFW
Generador de comandos de apagado
Generador de configuraciones de Wireguard
Generador de crontab
Generador de htpasswd/htaccess
Generador de iptables
Generador de puertos aleatorios
Hoja de trucos de ZPool
IPv4-6/IPRange/CIDR en IPRange/CIDR/IPMask
Linealizador de comandos de shell
Listador de subredes IPv4
Mi dirección IP
Números de puerto
Probador de micrófonos
Pruebas de WebSocket
Silbido
Ubicación geográfica de IP
generador de direcciones MAC
generador de línea de comandos de firewalld
tools.restic-command-generator.name
tools.url-redirection-checker.name
De Epub a Markdown
Diferencia de Markdown
Editor de Markdown
Embellecedor de tablas de Markdown
Generador de tablas Markdown
Generador de índice de Markdown
HTML a Markdown
Lorem Ipsum de rebajas
Markdown a DOCX
Markdown a HTML
Markdown a datos
Markdown a texto
Pegar como Markdown
Vista previa de Markdown
tools.markdown-format-converter.name
Linter TOML
TOML a JSON
TOML a YAML
Buscador de líneas duplicadas
Calculadora de Levenshtein
Codificador/decodificador de tokens GPT
Comparación de fuentes
Compartidor de enlaces sociales
Comprobador de I y L
Conversor de distribución de teclado
Conversor de mayúsculas y minúsculas
Convertidor de código Morse
Convertidor de listas
Convertidor de runas
Diagrama de estructura de carpetas
Diferencia de texto
Divisor de indicaciones de IA
Estadísticas de texto
Estimador de tokens GPT
Exportador de sirenas
Extraer texto de HTML
Formateador Unicode
Generador de citas
Generador de comandos Sed
Generador de texto artístico ASCII
Generador/Banner de Zalgo
Hola, generador.
Imagen a arte ASCII
JSON a TOON
Lector de RSVP
Listas Comparar
Ofuscador de cadenas
Palabras distintas
Paquete de archivos para IA
Probador de expresiones regulares
Reemplazador de texto inteligente y separador de línea
Selector de emojis
Selector de líneas aleatorias
TOON a JSON
Tabulador a espacios
Texto a nombres Unicode
Texto al alfabeto de la OTAN
Traductor de texto
Unicode a GSM-7
Analizador de agente de usuario
Cadena Slugify
Capturador de URL
Codificar/decodificar cadenas con formato URL
Comprobador de contraste de color
Conversor de colores
Convertidor CSS XPath
Convertidor de píxeles REM
Convertidor de unidades CSS
Creador de fragmentos de búsqueda de texto de URL
Códigos de estado HTTP
Editor HTML WYSIWYG
Embellecedor de CSS
Embellecedor de HTML
Escapar entidades HTML
Generador de URL UTM
Generador de degradados CSS
Generador de marcadores de posición SVG
HTML a XHTML
HTML a datos
Imagen a CSS
Información del dispositivo
Limpiador de HTML
Limpiador de URL
Minificador de HTML
Rueda de colores
Tipos MIME
Formateador XML
Linter XML
ObjGen a HTML
Probador XPath
Probador XSLT
XML a JSON
Aplanador/desaplanador de YAML
Convertidor de YAML a JSON
Embellecer y formatear YAML
Fusión de YAML
YAML a TOML

Hoja de trucos de Nginx

Configuración de Nginx y comandos útiles

nginx is a web server, reverse proxy and load balancer. Configuration is a tree of contexts — main → events / http → server → location — and a directive is only valid in the contexts that define it.

🛠 Service & CLI

# check the configuration before you break production
sudo nginx -t

# print the entire resolved configuration, includes and all
sudo nginx -T

# reload without dropping connections
sudo nginx -s reload
sudo systemctl reload nginx

# start, stop, restart, status
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl status nginx

# version, and the modules it was built with
nginx -V

# enable a site (Debian/Ubuntu layout)
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

# watch the requests come in
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log

💡 nginx -t then nginx -s reload — never restart on a live server if you can avoid it. A reload keeps existing connections alive; a restart drops them.

📁 Where Things Live

PathWhat it holds
/etc/nginx/nginx.confThe main file — worker settings and the http block
/etc/nginx/conf.d/*.confIncluded by default on RHEL-style installs
/etc/nginx/sites-available/Site configs on Debian/Ubuntu
/etc/nginx/sites-enabled/Symlinks to the sites that are actually live
/var/log/nginx/access.logEvery request
/var/log/nginx/error.logErrors, and anything the workers complain about
/var/www/htmlThe conventional document root

🧱 Config Skeleton

user www-data;
worker_processes auto;

events {
  worker_connections 1024;
}

http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;
  sendfile      on;
  keepalive_timeout 65;

  server {
    listen 80;
    server_name example.com;

    location / {
      root /var/www/html;
      index index.html;
    }
  }
}

🎧 listen & server_name

server {
  # plain HTTP
  listen 80;

  # HTTPS, with HTTP/2
  listen 443 ssl;
  http2 on;

  # IPv6 as well, or IPv6 only
  listen [::]:80;
  listen [::]:80 ipv6only=on;

  # the fallback server for requests that match no other server_name
  listen 80 default_server;

  # one name, several names, wildcards, or a regex
  server_name example.com;
  server_name example.com www.example.com;
  server_name *.example.com;
  server_name ~^(?<sub>.+)\.example\.com$;

  # requests that arrive with no Host header
  server_name "";
}

📄 Serving Files

server {
  listen 80;
  server_name example.com;
  root /var/www/example.com;
  index index.html index.htm;

  # try the file, then the directory, then fall back — the SPA pattern
  location / {
    try_files $uri $uri/ /index.html;
  }

  # cache fingerprinted assets hard
  location ~* \.(js|css|png|jpe?g|gif|svg|woff2?)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
    access_log off;
  }

  # a directory listing, when you actually want one
  location /downloads/ {
    autoindex on;
  }

  # a single file
  location = /robots.txt {
    root /var/www/example.com;
    log_not_found off;
  }
}

⚠️ root vs alias: root appends the whole URI to the path, alias replaces the matched prefix. With location /static/ { root /var/www; } a request for /static/a.png reads /var/www/static/a.png; with alias /var/www/assets/; it reads /var/www/assets/a.png. Always end an alias path with /.

📍 Location Matching

nginx does not pick locations top to bottom — it picks by modifier, in this order:

ModifierExampleMeaningPriority
=location = /healthExact match1 — wins immediately
^~location ^~ /static/Prefix match that stops regex matching2
~location ~ \.php$Case-sensitive regex, first match in file order3
~*location ~* \.(jpe?g)$Case-insensitive regex3
(none)location /images/Prefix match — the longest one wins if no regex did4
location = /health { return 200 "ok\n"; }   # checked first, cheapest
location ^~ /assets/ { root /var/www; }     # never falls through to the regex below
location ~* \.(png|jpg)$ { expires 30d; }
location / { try_files $uri $uri/ =404; }   # the catch-all

🔀 Redirects & Rewrites

# permanent redirect to the canonical host
server {
  listen 80;
  server_name www.example.com;
  return 301 https://example.com$request_uri;
}

# force HTTPS
server {
  listen 80;
  server_name example.com;
  return 301 https://$host$request_uri;
}

# temporary redirect of a single path
location /old-page {
  return 302 /new-page;
}

# rewrite with a captured segment
location /blog/ {
  rewrite ^/blog/(.*)$ /articles/$1 permanent;
}

# serve a maintenance page for everyone but your own IP
location / {
  if ($remote_addr != 203.0.113.7) {
    return 503;
  }
}

💡 Prefer return over rewrite — it is faster and clearer. Reach for rewrite only when you need to transform the path.

🔁 Reverse Proxy

server {
  listen 80;
  server_name app.example.com;

  location / {
    proxy_pass http://127.0.0.1:3000;

    # pass the client's details through to the app
    proxy_set_header Host              $host;
    proxy_set_header X-Real-IP         $remote_addr;
    proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    # timeouts: raise these for slow backends
    proxy_connect_timeout 60s;
    proxy_send_timeout    60s;
    proxy_read_timeout    60s;

    # buffering off for streaming responses (SSE, logs)
    proxy_buffering on;
  }

  # WebSockets need the upgrade headers
  location /ws/ {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade    $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 3600s;
  }
}

⚠️ The trailing slash on proxy_pass changes everything. proxy_pass http://backend; forwards /api/users as /api/users; proxy_pass http://backend/; strips the matched location prefix first.

⚖️ Load Balancing

upstream backend {
  # least_conn;              # send to the server with the fewest connections
  # ip_hash;                 # sticky sessions by client IP
  # hash $request_uri;       # sticky by URI

  server 10.0.0.1:3000 weight=3;
  server 10.0.0.2:3000;
  server 10.0.0.3:3000 max_fails=3 fail_timeout=30s;
  server 10.0.0.4:3000 backup;

  keepalive 32;              # reuse upstream connections
}

server {
  listen 80;
  location / {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Connection "";   # required for keepalive to work
  }
}
MethodBehaviour
(default)Round robin, honouring weight
least_connFewest active connections wins
ip_hashSame client IP always reaches the same server
hash <key>Distribute by any variable, e.g. $request_uri
random two least_connPick two at random, then the less busy one

🔐 HTTPS

server {
  listen 443 ssl;
  http2 on;
  server_name example.com;

  ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers off;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 1d;
  ssl_stapling on;
  ssl_stapling_verify on;

  # tell browsers to stay on HTTPS
  add_header Strict-Transport-Security "max-age=63072000" always;
}
# get and renew certificates automatically
sudo certbot --nginx -d example.com -d www.example.com
sudo certbot renew --dry-run

🚦 Limits & Access Control

http {
  # 10 MB of state ≈ 160k addresses; 10 requests/second per IP
  limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
  limit_conn_zone $binary_remote_addr zone=conn_limit:10m;

  server {
    # allow short bursts, queue the rest without delaying legitimate users
    location /api/ {
      limit_req zone=req_limit burst=20 nodelay;
      limit_conn conn_limit 10;
    }

    # the size of the largest upload you accept
    client_max_body_size 25m;

    # HTTP basic auth (htpasswd -c /etc/nginx/.htpasswd user)
    location /admin/ {
      auth_basic "Restricted";
      auth_basic_user_file /etc/nginx/.htpasswd;
    }

    # allow a subnet, deny the rest
    location /internal/ {
      allow 10.0.0.0/8;
      deny  all;
    }

    # do not serve dotfiles
    location ~ /\.(?!well-known) {
      deny all;
    }
  }
}

🗜 Performance

http {
  # compress text responses
  gzip on;
  gzip_vary on;
  gzip_min_length 1024;
  gzip_types text/plain text/css application/json application/javascript
             text/xml application/xml image/svg+xml;

  # kernel-level file sending
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;

  # keep connections around for reuse
  keepalive_timeout 65;
  keepalive_requests 1000;

  # cache open file handles
  open_file_cache max=10000 inactive=30s;
  open_file_cache_valid 60s;

  # a proxy cache for upstream responses
  proxy_cache_path /var/cache/nginx keys_zone=app_cache:10m max_size=1g inactive=60m;

  server {
    location / {
      proxy_cache app_cache;
      proxy_cache_valid 200 10m;
      add_header X-Cache-Status $upstream_cache_status;
    }
  }
}

🧪 Useful Variables

VariableHolds
$hostThe Host header, or the server name that matched
$uriThe normalised path, without the query string
$request_uriThe original path with the query string
$args / $arg_nameThe whole query string / one named parameter
$schemehttp or https
$remote_addrThe client’s IP address
$proxy_add_x_forwarded_forThe existing chain plus $remote_addr
$http_<name>Any request header, e.g. $http_user_agent
$request_methodGET, POST, …
$statusThe response status
$upstream_addrWhich backend actually served the request
$upstream_response_timeHow long the backend took
$request_timeHow long nginx took, start to finish

🩺 Troubleshooting

SymptomUsual cause
502 Bad GatewayThe backend is down, or refused the connection — check the app and proxy_pass
504 Gateway TimeoutThe backend is too slow — raise proxy_read_timeout, then fix the app
413 Request Entity Too LargeRaise client_max_body_size
403 Forbidden on a static fileThe worker user cannot read the path, or a directory lacks x
The wrong site is servedNo server_name matched, so the default_server answered
Changes have no effectThe config was never reloaded, or the file is not symlinked into sites-enabled
# see the config nginx is actually running, includes resolved
sudo nginx -T | less

# which worker user needs read access
ps -o user= -C nginx | sort -u

# turn up the error log while debugging
# error_log /var/log/nginx/error.log debug;

📚 Resources

  • Official documentation
  • Directive index
  • Variable index
  • Mozilla SSL configuration generator
  • Certbot — Let’s Encrypt