Expresión regular de configuración de NGINX en la ubicación

Expresión regular de configuración de NGINX en la ubicación

Después de más de 15 años de usar el servidor web de Apache, quería darle una oportunidad al chico nuevo. ;) He estado intentando modificar mis archivos de configuración de NGINX para que sean breves.

El sitio generalmente reescribe todo el tráfico en un archivo específico index.php, pero tengo dos directorios privacyque eulacontienen mensajes de correo electrónico individuales index.php, por lo que para esos dos directorios quiero que solo llame a los archivos en los directorios.

Por ejemplo:

location ~ /(privacy|eula) {
  try_files $uri $uri/ =404;
}

hace que mi navegador descargue el contenido de las páginas como un archivo .dms.

Si divido la ubicación en dos así:

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

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

Funciona según lo previsto.

Busqué y también encontré la sugerencia de hacerlo de esta manera, pero tuvo el mismo efecto location ~ ^/(privacy|eula). ¿Tengo que vivir con el hecho de que NGINX es muy detallado o qué estoy haciendo mal?

Gracias

Respuesta1

Elexpresión regular locationLos bloques se evalúan en orden hasta que se encuentra una coincidencia.

En su caso, lo ha colocado location ~ /(privacy|eula)encima del location ~ \.php$bloque, de modo que un URI similar /eula/index.phpno será procesado en la ubicación correcta y en su lugar se descargará.

Colocar ellocation ~ /(privacy|eula) bloquedespuésel location ~ \.php$bloque.

Vereste documentopara detalles.

información relacionada