Назад | Перейти на главную страницу

Как запретить nginx использовать подкаталоги, специфичные для обратного прокси

На Apache вы можете ProxyPass все, кроме одного или нескольких подкаталогов (с знаком "!").

    ProxyPass /subdir !
    ProxyPass / http://localhost:9999/

Что такое эквивалент Nginx?

Мое первое предположение явно не работает:

 location /subdir {
      root /var/www/site/subdir;
  }

 location / {
      proxy_pass http://localhost:9999/ ;
  }

Вы можете привязать proxy_pass ТОЧНО к тому пути, который вам нравится, например

location = / {
    proxy_pass http://localhost:9999/;
}

Это гарантирует, что не будет пройден другой путь, кроме /

ИЛИ

вы можете использовать этот синтаксис только для сопоставления подкаталогов

location ^~ /subdir {
     alias /var/www/site/subdir;
}

location / {
    proxy_pass http://localhost:9999/ ;
}

В ^~ соответствует вложенному каталогу, а затем прекращает поиск, поэтому / не будет выполнен. Описано Вот.