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

19

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

 server {
     ...
     location /location1 {
              do something;
     }
     location /location2 {
              do something;
     }
     location /all_other_locations {
            return 301 http://www.google.de
     }
alabamajack
источник

Ответы:

31

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

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

    location /location1 {
        # do something
    }

    location /location2 {
        # do domething
    }
}
Алексей Тен
источник
1
Что если вы хотите /сопоставить что-то конкретное, а затем все остальное будет поймано чем-то другим? Вы бы использовали сопоставление по шаблону тогда?
Тим Тисдалл
3
ах .. я думаю это можно использовать location = /. Явный /запрос будет соответствовать этому, и все остальное будет идти, location /если что-то еще не совпадает.
Тим Тисдалл