Iniciar sesión
Iniciar sesión

Ejemplos de la directiva location en Nginx

Ejemplos de la directiva location en Nginx
Adnene Mabrouk
Redactor técnico
Servidor web Nginx
09.02.2026
Reading time: 5 min

La directiva location de Nginx es una herramienta potente para controlar cómo se procesan distintos tipos de solicitudes. Al definir reglas en bloques location, puedes aplicar configuraciones específicas, redirigir el tráfico a diferentes partes de tu aplicación o incluso bloquear completamente ciertas solicitudes. El uso correcto de esta directiva permite una gestión eficiente de las peticiones, lo cual es clave para mejorar el rendimiento, la seguridad y la funcionalidad de las aplicaciones web.

Sintaxis básica de la directiva location

La directiva location se define en el archivo de configuración nginx.conf:

location [modifier] uri { ... }

  • modifier: parámetro opcional que define el tipo de coincidencia (exacta, prefijo, expresión regular, etc.)

  • uri: la URI que se debe comparar

Dentro de las llaves puedes definir distintas directivas como proxy_pass, root o index.

Ejemplo de coincidencia exacta

Una coincidencia exacta ocurre cuando la cadena proporcionada coincide exactamente con la URI solicitada.

location = /exact-match {

    root /var/www/html;

    index index.html;

}

Solo las solicitudes a /exact-match serán procesadas por este bloque.

También puedes añadir condiciones usando if (ten en cuenta que Nginx no tiene un if-else tradicional):

location = /exact-match {

    root /var/www/html;

    index index.html;

    if ($http_user_agent ~* "Chrome") {

        add_header X-Browser "Chrome";

    }

}

Si el agente de usuario es Chrome, la respuesta incluirá el encabezado adicional X-Browser.

Ejemplo de coincidencia por prefijo

Es el tipo más común y coincide con cualquier URI que comience con la cadena especificada.

location /prefix {

    root /var/www/html;

    index index.html;

    if ($request_method = POST) {

        return 405;

    }

}

Este bloque gestiona solicitudes como /prefix/page1 o /prefix/page2. Si el método es POST, Nginx devuelve 405 Method Not Allowed.

Ejemplo con expresiones regulares

Para escenarios más complejos, puedes usar expresiones regulares.

Comodines comunes:

  • . – coincide con un carácter

  • .* – coincide con cualquier secuencia

  • ^ – inicio de cadena

  • $ – final de cadena

location ~* \.php$ {

    fastcgi_pass 127.0.0.1:9000;

    fastcgi_index index.php;

    include fastcgi_params;

    if ($request_uri ~* "/admin") {

        return 403;

    }

    if ($request_uri !~* "/admin") {

        add_header X-Admin "Not Admin";

    }

}

Explicación:

  • ~* indica coincidencia sin distinguir mayúsculas

  • \.php$ coincide con archivos PHP

  • si la URI contiene /admin → 403 Forbidden

  • si no, se añade X-Admin: Not Admin

Coincidencia sin distinguir mayúsculas

location ~* \.jpg$ {

    root /var/www/images;

    if ($http_referer !~* "^https?://(www\.)?example\.com") {

        return 403;

    }

}

Coincide con .jpg, .JPG, etc., y solo sirve imágenes si el referer proviene de example.com.

Prioridad y orden

Nginx evalúa los bloques así:

  1. Exacto (=) – máxima prioridad

  2. Expresiones regulares (~, ~*) – en orden de aparición

  3. Prefijos (/) – el prefijo más largo gana

Ejemplo:

location = /exact { }

location ~* \.jpg$ { }

location / { }

Bloques location anidados

location /nested {

    location /nested/subnested {

        root /var/www/html;

    }

    root /var/www/html;

}

Las solicitudes a /nested/subnested usan el bloque interno.

Ejemplo real de servidor web

server {

listen 80;

server_name localhost;

location / {

root /var/www/html;

index index.html;

}

location = /about {

root /var/www/html;

index about.html;

}

location /api {

proxy_pass http://localhost:3000;

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;

}

location ~ \.php$ {

root /var/www/html;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi_params;

}

location ~* \.(jpg|jpeg|png|gif|ico)$ {

root /var/www/images;

}

location /admin {

root /var/www/admin;

index index.html;

location /admin/stats {

proxy_pass http://localhost:8080/stats;

}

}

}

Recargar Nginx

sudo systemctl reload nginx

Pruebas y depuración

Validar configuración:

sudo nginx -t

Probar rutas:

curl -I http://localhost/about

curl -X POST http://localhost/prefix/form

curl -H "User-Agent: Chrome" http://localhost/exact-match

Ver logs:

tail -f /var/log/nginx/access.log

tail -f /var/log/nginx/error.log

Restricción de acceso a rutas sensibles

location /admin {

    allow 192.168.1.100;

    deny all;

}

Solo esa IP puede acceder.

root vs alias

Directiva

Comportamiento

root

añade la URI

alias

reemplaza el prefijo

Ejemplo con alias:

location /files/ {

    alias /data/downloads/;

}

Nota: siempre termina alias con /.

Conclusión

Comprender la directiva location es esencial para un manejo preciso de las solicitudes. Las coincidencias exactas, por prefijo y por regex tienen diferentes prioridades y afectan directamente al rendimiento y comportamiento del sitio. Al dominar estos patrones y usar bloques anidados, puedes construir configuraciones Nginx limpias, eficientes y seguras.

Servidor web Nginx
09.02.2026
Reading time: 5 min

Similares

Servidor web Nginx

Cómo exponer servicios con Nginx Proxy Manager

¿Qué es Nginx Proxy Manager? Nginx Proxy Manager es una interfaz fácil de usar para gestionar reverse proxies. Simplifica el proceso de enrutar el tráfico hacia distintos servicios, haciéndolo accesible incluso para usuarios sin conocimientos profundos de redes. Al proporcionar una interfaz gráfica de usuario (GUI) sobre Nginx, esta herramienta permite configurar y administrar rápidamente proxy hosts, certificados SSL y otras configuraciones avanzadas, sin necesidad de trabajar con comandos complejos en la línea de comandos. Instalación de Nginx Proxy Manager La instalación de Nginx Proxy Manager es sencilla gracias a Docker. A continuación, una guía paso a paso para ponerlo en funcionamiento: Requisitos previos Tener Docker y Docker Compose instalados en tu servidor en la nube Conocimientos básicos de los comandos de Docker Pasos de instalación Crea un directorio para Nginx Proxy Manager y accede a él: mkdir nginx-proxy-manager cd nginx-proxy-manager Crea un archivo docker-compose.yml con el siguiente contenido: version: '3' services:   app:     image: 'jc21/nginx-proxy-manager:latest'     restart: always     ports:       - '80:80'       - '81:81'       - '443:443'     environment:       DB_MYSQL_HOST: "db"       DB_MYSQL_PORT: 3306       DB_MYSQL_USER: "npm"       DB_MYSQL_PASSWORD: "npm"       DB_MYSQL_NAME: "npm"     volumes:       - ./data:/data       - ./letsencrypt:/etc/letsencrypt   db:     image: 'mysql:5.7'     restart: always     environment:       MYSQL_ROOT_PASSWORD: 'npm'       MYSQL_DATABASE: 'npm'       MYSQL_USER: 'npm'       MYSQL_PASSWORD: 'npm'     volumes:       - ./data/mysql:/var/lib/mysql Inicia los contenedores: docker-compose up -d Accede a Nginx Proxy Manager mediante la dirección IP de tu servidor en el puerto 81 (por ejemplo, http://localhost:81). Configuración inicial de Nginx Proxy Manager Después de la instalación, es momento de realizar la configuración inicial: Inicio de sesión:Abre tu navegador y ve a http://<ip-de-tu-servidor>:81. Las credenciales predeterminadas son: Correo electrónico: admin@example.com Contraseña: changeme Cambiar credenciales predeterminadas:Actualiza inmediatamente el correo electrónico y la contraseña para proteger Nginx Proxy Manager. Vista general del panel:El panel muestra un resumen de tus proxy hosts, certificados SSL y otras configuraciones. Familiarízate con la interfaz. Configuración de un nuevo proxy host Para exponer un servicio, debes configurar un nuevo proxy host. Sigue estos pasos: Agregar un nuevo proxy host Ve a la sección “Proxy Hosts” Haz clic en “Add Proxy Host” Introducir nombres de dominio:Introduce los dominios que deseas asociar con este servicio. Puedes añadir varios dominios separándolos por comas. Hostname/IP de destino y puerto:Introduce la dirección IP interna y el número de puerto del servicio que deseas exponer.Ejemplo: si el servicio web se ejecuta en el puerto 8080, introduce 192.168.1.100 y 8080. Opciones: Marca “Block Common Exploits” para añadir una capa adicional de seguridad Activa “Websockets Support” si tu servicio lo requiere SSL:Puedes usar un certificado SSL existente o solicitar uno nuevo a través de Let’s Encrypt. Guardar:Haz clic en “Save” para finalizar la configuración del proxy host. Gestión de certificados SSL Los certificados SSL son fundamentales para proteger tus servicios. Nginx Proxy Manager facilita este proceso: Solicitar un nuevo certificado SSL: Ve a la sección “SSL Certificates” Haz clic en “Add SSL Certificate” Selecciona “Let’s Encrypt” e introduce los datos necesarios, como el correo electrónico y el dominio Renovación automática:Nginx Proxy Manager renueva automáticamente los certificados de Let’s Encrypt, garantizando la seguridad sin intervención manual. Certificados personalizados:Si dispones de un certificado SSL propio, también puedes cargarlo desde esta sección. Opciones de configuración avanzada Nginx Proxy Manager ofrece múltiples opciones avanzadas para ajustar tu configuración: Listas de acceso (Access Lists): Restringe el acceso a los servicios creando listas de acceso Permite o deniega el tráfico según direcciones IP Hosts de redirección (Redirection Hosts): Configura fácilmente redirecciones de un dominio a otro Stream Hosts: Utiliza la función de stream para gestionar tráfico TCP/UDP, como servicios SSH o FTP Configuración personalizada de Nginx: Añade directivas personalizadas de Nginx si tu servicio requiere configuraciones específicas Exponer servicios: guía paso a paso Exponer un servicio con Nginx Proxy Manager implica varios pasos: Identificar el servicio:Determina la IP interna y el puerto del servicio que deseas exponer. Crear un proxy host:Sigue los pasos descritos en la sección “Configuración de un nuevo proxy host”. Habilitar SSL:Solicita un certificado SSL para el dominio asociado al servicio. Probar la configuración:Accede al servicio mediante el dominio para confirmar que todo funciona correctamente. Supervisar y ajustar:Revisa periódicamente el rendimiento y ajusta la configuración según sea necesario. Monitorización y registros Nginx Proxy Manager incluye funciones integradas de monitorización y registro: Registros (Logs): Accede a los registros desde la sección “Logs” Incluyen información detallada sobre las solicitudes entrantes, como direcciones IP, rutas solicitadas y estados de respuesta Monitorización: Usa el panel para supervisar el estado de los proxy hosts y certificados SSL Asegúrate de que los certificados SSL estén actualizados y que todos los servicios funcionen correctamente Solución de problemas comunes Errores de certificado SSL: Verifica que el dominio apunte correctamente a la IP del servidor Comprueba que los puertos 80 y 443 estén abiertos y accesibles 502 Bad Gateway: Asegúrate de que el servicio expuesto esté en ejecución y sea accesible internamente Confirma que la IP interna y el puerto configurados sean correctos Tiempos de espera en la conexión: Revisa la configuración del firewall para evitar bloqueos de tráfico Prueba la conectividad entre el servidor y el servicio Conclusión Nginx Proxy Manager simplifica significativamente la exposición de servicios y es una herramienta excelente tanto para principiantes como para usuarios avanzados. Gracias a su interfaz intuitiva y a sus potentes funciones, puedes configurar rápidamente reverse proxies, proteger tus servicios con certificados SSL y solucionar cualquier problema que surja. Siguiendo los pasos de esta guía, podrás gestionar y exponer servicios de forma eficiente con Nginx Proxy Manager.
23 January 2026 · 7 min to read

¿Necesita ayuda para
elegir un producto?

Nuestros expertos están disponibles para ayudarle a encontrar la solución cloud
adecuada para su empresa, incluso si no sabe por dónde empezar.
Hostman's Support