Як запобігти nginx із зворотних специфічних підкаталогів


12

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

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

Що таке еквівалент Nginx?

Моя перша здогадка, очевидно, не працює:

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

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

Відповіді:


12

Ви можете прив’язати proxy_pass до ТОЧНО потрібного вам шляху, як це

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

Це гарантує, що жоден інший шлях не буде пройдений, але /

АБО

Ви можете використовувати цей синтаксис для відповідних підкаталогів

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

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

^~Відповідає підкаталог , а потім припиняє пошук , так що /нічого очікувати виконано. Це описано тут .


root / var / www / site / subdir у моєму випадку має бути root / var / www / site, інакше nginx спробує отримати доступ / var / www / site / subdir / subdir.
Тінус

Ти правий. Або це, або ви можете використовувати aliasзамість цьогоroot
Крістофер Перрін

1
Чи можете ви пояснити це ^~більше? Я не міг отримати те, що робить. Я спробував прочитати надіслане вами посилання, але все ще не можу його отримати. Якщо місце найдовшого відповідного префікса має модифікатор "^ ~", регулярні вирази не перевіряються.
Мохаммед Нурелдін

@MohammedNoureldin по суті означає, що він намагається співставити префікс на шляху і не оцінює регулярні вирази.
Крістофер Перрін

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