Пріоритет розташування Nginx


186

У якому порядку вводяться директиви про місцезнаходження?

Відповіді:


352

З основних модулів HTTP :

  1. Директиви з префіксом "=", які точно відповідають запиту. Якщо його знайдено, пошук зупиняється.
  2. Усі залишилися директиви зі звичайними рядками. Якщо в цій відповідності використовується префікс "^ ~", пошук зупиняється.
  3. Регулярні вирази в тому порядку, який вони визначені у файлі конфігурації.
  4. Якщо номер 3 дав збіг, цей результат використовується. В іншому випадку використовується сірник від №2.

Приклад з документації:

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 ] 
}

Якщо це все ще заплутано, ось довше пояснення .


9
з цим можна допомогти вам :) github.com/detailyang/nginx-location-match-visible
користувач2228392

4
Зауважте, що обидва /та /documents/правила відповідають запиту /documents/index.html, але останнє правило має перевагу, оскільки це найдовше правило.
arrakis_sun

69

Він спрацьовує в цьому порядку.

  1. = (точно)

    location = /path

  2. ^~ (форвард)

    location ^~ /path

  3. ~ (залежність від регістру звичайного виразу)

    location ~ /path/

  4. ~* (регістр регулярних виразів нечутливий)

    location ~* .(jpg|png|bmp)

  5. /

    location /path


3
^ ~ (Уперед матч) дуже важливо
iwind

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.