Prioridad de ubicación de Nginx

186

¿En qué orden se activan las directivas de ubicación?

usuario650505
fuente

Respuestas:

352

Desde los documentos del módulo central HTTP :

  1. Directivas con el prefijo "=" que coinciden exactamente con la consulta. Si se encuentra, la búsqueda se detiene.
  2. Todas las directivas restantes con cadenas convencionales. Si esta coincidencia utiliza el prefijo "^ ~", la búsqueda se detiene.
  3. Expresiones regulares, en el orden en que se definen en el archivo de configuración.
  4. Si el # 3 arrojó una coincidencia, se utiliza ese resultado. De lo contrario, se utiliza la coincidencia del # 2.

Ejemplo de la documentación:

location  = / {
  # matches the query / only.
  [ configuration A ] 
}
location  / {
  # matches any query, since all queries begin with /, but regular
  # expressions and any longer conventional blocks will be
  # matched first.
  [ configuration B ] 
}
location /documents/ {
  # matches any query beginning with /documents/ and continues searching,
  # so regular expressions will be checked. This will be matched only if
  # regular expressions don't find a match.
  [ configuration C ] 
}
location ^~ /images/ {
  # matches any query beginning with /images/ and halts searching,
  # so regular expressions will not be checked.
  [ configuration D ] 
}
location ~* \.(gif|jpg|jpeg)$ {
  # matches any request ending in gif, jpg, or jpeg. However, all
  # requests to the /images/ directory will be handled by
  # Configuration D.   
  [ configuration E ] 
}

Si aún es confuso, aquí hay una explicación más larga .

Martin Redmond
fuente
9
con ella puede ayudarte :) github.com/detailyang/nginx-location-match-visible
user2228392
44
Tenga en cuenta que ambas reglas /y /documents/coinciden con la solicitud /documents/index.html, pero la última regla tiene prioridad ya que es la regla más larga.
arrakis_sun
70

Se dispara en este orden.

  1. = (exactamente)

    location = /path

  2. ^~ (partido delantero)

    location ^~ /path

  3. ~ (expresión regular distingue entre mayúsculas y minúsculas)

    location ~ /path/

  4. ~* (expresión regular sin distinción entre mayúsculas y minúsculas)

    location ~* .(jpg|png|bmp)

  5. /

    location /path

Don Dilanga
fuente
3
^ ~ (partido por delante) muy importante
iwind