Size: a a a

2021 March 29

ВМ

Владимир Муковоз... in nginx_ru
Vitaly
коллеги, приветствую!
я не очень хорошо знаком с nginx, прошу подсказать в какую сторону копать.
для всего сервера включена basic_auth, но есть урлы вида http://example.com/api/user/listhttp://example.com/api/user/list, для которых авторизацию требуется отключить.
проблема в том, что директории api в проекте нет, урлы эти генерируются непонятно каким образом и, например, условный location ^~ /api/ прописать не выходит. возможно ли средствами nginx отключить авторизацию для определенных ури?
составить локейшены правильно, в тех где нужна авторизация прописать её, где нет не прописывать.
источник

ВМ

Владимир Муковоз... in nginx_ru
нужно показывать пример или тебе ясно что тут написано?
источник

V

Vitaly in nginx_ru
Владимир Муковоз
составить локейшены правильно, в тех где нужна авторизация прописать её, где нет не прописывать.
если не сложно, то прошу пример показать)

я делал так:
location ^~ /api/ {
basic_auth off;
}
и это не работает
источник

РП

Рома Петров... in nginx_ru
Владимир Муковоз
составить локейшены правильно, в тех где нужна авторизация прописать её, где нет не прописывать.
это просто еще одно решение, не менее и не более криворукое, чем мое )) у него может быть 50 локейшенов, прописывать в каждый как минимум не удобно (я не утверждаю, что у него столько много, но вдруг?)
источник

РП

Рома Петров... in nginx_ru
Vitaly
если не сложно, то прошу пример показать)

я делал так:
location ^~ /api/ {
basic_auth off;
}
и это не работает
Виталий, Владимир предлагает в каждом location, где нужно запрашивать basic аутентификацию, добавить настройки basic аутентификации, где не нужно запрашивать - убрать настройки basic аутентификации
источник

ђ

ђRus 😼 in nginx_ru
Vitaly
если не сложно, то прошу пример показать)

я делал так:
location ^~ /api/ {
basic_auth off;
}
и это не работает
падажжы. покажи сперва, как аутх сам настроен.
источник

РП

Рома Петров... in nginx_ru
я предложил вариант со списком исключений в виде map
источник

ВМ

Владимир Муковоз... in nginx_ru
Рома Петров
это просто еще одно решение, не менее и не более криворукое, чем мое )) у него может быть 50 локейшенов, прописывать в каждый как минимум не удобно (я не утверждаю, что у него столько много, но вдруг?)
если таких решений как твоё будет много, со временем такую конфигурацию понимать и обслуживать станет сложнее, а ещё if не рекомендуется к использованию в таком ключе. Скажи что разработчик nginx обманывает))
источник

AN

Anton Noginov in nginx_ru
nikitasius
Так там только Страсбург сгорел
А в суд подадут на всю контору сразу.
источник

ВМ

Владимир Муковоз... in nginx_ru
Рома Петров
что-то типа такого:

  set $auth_basic off;
 if (тут_проверка_uri_по_карте) {
   set $auth_basic "Restricted area!";
 }

 auth_basic $auth_basic;
 auth_basic_user_file passwds;
а ещё тут даже при твоём подходи иф нахрен не впёрся
источник

ВМ

Владимир Муковоз... in nginx_ru
источник

ВМ

Владимир Муковоз... in nginx_ru
читаем доки, сюда можно задавать урл переменной на сколько я понимаю прям с мапа
источник

РП

Рома Петров... in nginx_ru
Владимир Муковоз
если таких решений как твоё будет много, со временем такую конфигурацию понимать и обслуживать станет сложнее, а ещё if не рекомендуется к использованию в таком ключе. Скажи что разработчик nginx обманывает))
видишь ли, мой вариант не бесспорный, как и твой. твой вариант более каноничен, но более затратен в сопровождении при определенных условиях. мой менее каноничен.
оба варианта прекрасно работают и степень криворукости у них, на мой взгляд, одинакова
источник

V

Vitaly in nginx_ru
ђRus 😼
падажжы. покажи сперва, как аутх сам настроен.
вот так на данный момент

server {

   auth_basic "dev";
   auth_basic_user_file /etc/nginx/.htpasswd;
источник

ВМ

Владимир Муковоз... in nginx_ru
Рома Петров
видишь ли, мой вариант не бесспорный, как и твой. твой вариант более каноничен, но более затратен в сопровождении при определенных условиях. мой менее каноничен.
оба варианта прекрасно работают и степень криворукости у них, на мой взгляд, одинакова
напротив в сопровождении лучше мой вариант, а твой накидал и дальше мучайтесь
источник

РП

Рома Петров... in nginx_ru
Владимир Муковоз
читаем доки, сюда можно задавать урл переменной на сколько я понимаю прям с мапа
auth_request это совсем другой механизм
источник

ВМ

Владимир Муковоз... in nginx_ru
Рома Петров
auth_request это совсем другой механизм
ага
источник

ВМ

Владимир Муковоз... in nginx_ru
источник

ВМ

Владимир Муковоз... in nginx_ru
но я бы использовал именно подход с локейшенами
источник

ВМ

Владимир Муковоз... in nginx_ru
более читаемы и визуально понятный вариант
источник