nginx ловит все остальные локации, кроме указанных


19

У меня есть несколько мест на моем сервере. Я хочу поймать все другие места, которые пользователи дают через браузер. Как к этому? Например

 server {
     ...
     location /location1 {
              do something;
     }
     location /location2 {
              do something;
     }
     location /all_other_locations {
            return 301 http://www.google.de
     }

Ответы:


31

Расположение nginx основано на префиксах (кроме регулярных выражений), поэтому location /совпадает со всеми запросами, если не указан более конкретный.

server {
    location / {
        # catch all unless more specific location match
    }

    location /location1 {
        # do something
    }

    location /location2 {
        # do domething
    }
}

1
Что если вы хотите /сопоставить что-то конкретное, а затем все остальное будет поймано чем-то другим? Вы бы использовали сопоставление по шаблону тогда?
Тим Тисдалл

3
ах .. я думаю это можно использовать location = /. Явный /запрос будет соответствовать этому, и все остальное будет идти, location /если что-то еще не совпадает.
Тим Тисдалл
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.