#nginx #nginx-location
#nginx #nginx-местоположение
Вопрос:
Я новичок в мире NGINX и пытаюсь учиться.
Я хочу соответствовать:
- /моя страница
- /mypage.php
но не
- /mypagewebsite
или что-нибудь еще, кроме предыдущих 2 совпадений
Если я использую location ^~ /mypage {}
его, он также совпадает /mypagewebsite
, и я пытаюсь избежать 2 блоков с точным совпадением, например location = /mypage {}
, и location = /mypage.php {}
Как я мог бы сопоставить только первые 2 местоположения, не сопоставляя остальные?
Ответ №1:
Вы можете сделать это с помощью регулярных выражений (regex).
location ~ ^/mypage(?:.php)?$
Объяснение
~
— Сообщает nginx, что мы используем регулярное выражение^
— Отмечает начало строки (uri должен начинаться прямо с этого момента)(
и)
— Круглые скобки используются для группировки?:
— Эти символы означают, что nginx не должен помнить, что находится внутри круглых скобок?
— Означает, что вся группа (.php) является необязательной$
— Означает конец строки (uri должен заканчиваться прямо здесь)
Вы можете использовать онлайн-инструменты для создания и проверки ваших регулярных выражений. Например, вот этот.