@nano_e_t_4

Как сделать условие в конфигурации домена исключив из него 1 локейшн?

Всем привет
Есть конфиг джинкса, в котором куча всякого разного рода локейшенов, как с регулярками таки без, как с вложениями так и без.
И вот прилетела задача, нужно для всех локейшенов кроме одного отдавать 403 по юзер агенту. Подскажите, кто знает, как это сделать? (ниже пример конфига на котором тестирую)

server {
     listen 80;
     listen [::]:80;
     server_name lalala.la;

     root /var/www/domain-two.com/public_html;

     index index.html index.htm;
     access_log /var/log/nginx/access.log compression;


    if ($http_user_agent !~* "test")  {
          return 403;
    }

     location ^~ /unique_domain_without_user_agent_condition {
           return 402;
     }

     location / {
          return 406;
     }

     location /api {
          return 401;
     }

     location /test {
          return 405;
     }

     location ~ /ws {
          return 402;
     }
   }
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ответы на вопрос 2
Lynn
@Lynn
nginx, js, css
server {
    ...
    # наследуется во все location где явно не задано
    auth_request .auth;

    location ^~ /unique_domain_without_user_agent_condition {
        # тут auth_request не вызываем
        auth_request off;
        return 402;
    }

    location .auth {
        # проверка UA
        if ($http_user_agent !~* "test")  {
            return 403;
        }
        return 200;
    }
}
Ответ написан
Комментировать
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Выглядит крипово. Ну, добавьте второе условие, чтобы получилось (юзерагент = что-то И урл не равен чему-то).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы