guia_rapida_de_location_y_modificadores_en_nginx
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
guia_rapida_de_location_y_modificadores_en_nginx [2021/05/10 23:05] – [Modificadores en nested location] busindre | guia_rapida_de_location_y_modificadores_en_nginx [2021/05/11 00:08] (current) – busindre | ||
---|---|---|---|
Line 3: | Line 3: | ||
==== Modificadores ==== | ==== Modificadores ==== | ||
+ | **Prioridad** | ||
+ | |||
+ | El uso de modificadores y su prioridad en Nginx es algo confuso y esta pequeña guía intenta poder aclarar todos los casos posibles. | ||
+ | |||
+ | Las coincidencias exactas " | ||
+ | |||
+ | Luego están las localizaciones que usan expresiones regulares " | ||
+ | |||
+ | Si no se usa modificador, | ||
+ | |||
+ | - Coincidencia exacta =. | ||
+ | - Coincidencia prefijo con prioridad ^~. | ||
+ | - Expresión regular (sensible a mayúsculas y no sensible a mayúsculas). | ||
+ | - Coincidencia prefijo “Ningún modificador”. | ||
**=** El bloque se considerará una coincidencia si la URI de la solicitud coincide exactamente con la ubicación indicada. Es lo primero que busca Nginx, no pueden repetirse y tienen prioridad sobre cualquier otra location, usen o no expresiones regulares. El orden de estas location NO importa. | **=** El bloque se considerará una coincidencia si la URI de la solicitud coincide exactamente con la ubicación indicada. Es lo primero que busca Nginx, no pueden repetirse y tienen prioridad sobre cualquier otra location, usen o no expresiones regulares. El orden de estas location NO importa. | ||
Line 20: | Line 34: | ||
<code bash> | <code bash> | ||
# Query GET /cp/abc | # Query GET /cp/abc | ||
- | location ^~ /cp/{} | ||
location ^~ /cp/ab {} | location ^~ /cp/ab {} | ||
- | location ~ ^cp/ | + | location ~ ^/cp/abc {} # NO será seleccionada porque es una regex y NO tiene prioridad frente al uso de ^~. |
location ^~ /cp/abc {} <--- location seleccionada.</ | location ^~ /cp/abc {} <--- location seleccionada.</ | ||
- | NOTA: Es el método recomendado frente a usar " | + | NOTA: Es el método recomendado frente a usar " |
- | **(ninguno)**: | + | **(ninguno)**: |
+ | |||
+ | No puede haber dos location iguales | ||
<code bash> | <code bash> | ||
# Query GET /cp/abc | # Query GET /cp/abc | ||
- | location /cp/{} | + | location |
- | location /cp/ab {} | + | location / |
- | location ~ ^cp/abc{} # NO será seleccionada | + | |
- | location /cp/abc {} <--- Location seleccionada | + | |
- | location ^~/cp/abc {} | + | |
</ | </ | ||
- | A partir de estos tres modificadores (=, ~^ y ninguno), los siguientes modificadores refieren a expresiones regulares, siendo el primero en encajar el seleccionado. Por lo tanto SI importa el orden usado al usar regex. | ||
NOTA: Es preferible usar el método de prefijo ^~ ya que internamente tiene un mejor rendimiento. | NOTA: Es preferible usar el método de prefijo ^~ ya que internamente tiene un mejor rendimiento. | ||
- | **~** (Modificador de expresión regular) La ubicación se interpretará como una coincidencia de expresión regular que distingue entre mayúsculas y minúsculas. | + | **~** (Modificador de expresión regular) La ubicación se interpretará como una coincidencia de expresión regular que distingue entre mayúsculas y minúsculas. |
< | < | ||
- | **~*** (Modificador de expresión regular) La ubicación se interpretará como una coincidencia de expresión regular que NO distingue entre mayúsculas y minúsculas. Al igual que el anterior modificador case sensitive, | + | **~*** (Modificador de expresión regular) La ubicación se interpretará como una coincidencia de expresión regular que NO distingue entre mayúsculas y minúsculas. Al igual que el anterior modificador case sensitive, |
< | < | ||
< | < | ||
< | < | ||
- | |||
==== Modificadores en nested location ==== | ==== Modificadores en nested location ==== | ||
Line 58: | Line 68: | ||
- Coincidencia exacta =. | - Coincidencia exacta =. | ||
- | - Coincidencia prefijo | + | - Coincidencia prefijo |
- | - Expresión regular (sensible a mayúsculas y no sensible a mayúsculas). | + | - Expresión regular (sensible a mayúsculas y no sensible a mayúsculas): La primera en coincidir es la location usada. |
+ | - Coincidencia prefijo " | ||
- | Cuando se anidan locations en nginx, se debe tener en cuenta | + | Cuando se anidan locations en nginx, se debe tener en cuenta |
<code bash> | <code bash> | ||
Line 74: | Line 85: | ||
En cambio con los modificadores de coincidencia exacta o mediante prefijo se puede combinar como se quiera. Dentro del nested location se usa la prioridad normal anteriormente vista. | En cambio con los modificadores de coincidencia exacta o mediante prefijo se puede combinar como se quiera. Dentro del nested location se usa la prioridad normal anteriormente vista. | ||
+ | |||
<code bash> | <code bash> | ||
location /cp { | location /cp { | ||
Line 81: | Line 93: | ||
| | ||
}</ | }</ | ||
+ | |||
==== Location sin expresiones regulares y proxy_pass ==== | ==== Location sin expresiones regulares y proxy_pass ==== | ||
guia_rapida_de_location_y_modificadores_en_nginx.1620680702.txt.gz · Last modified: 2021/05/10 23:05 by busindre