LINUX.ORG.RU

Можно ли использвать в качестве переключателя переменную

 , ,


0

1

т.е например что-то типа

http 
map $http_user_agent $auth {
                "opera" off;
                "^opera" on;
}

location  / {
                root    /var/www/;
                auth_basic $auth;

И если да, то как?

Потому что всё равно при заходе на страницу спрашивается авторизация с текстом $auth , т.е переменная не интерпретируется

Подскажите, как сделать правильно

★★★★
Ответ на: комментарий от JFreeM

да статика пока раздаётся, их бужет ли сги нужен

GreyDoom ★★★★
() автор топика

Нет, в auth_basic переменные использовать нельзя.

Я бы сделал как-то так:


http {
  map $http_user_agent $auth {
    ~.*Opera.* on;
    default    off;
  }

  server {
    root /var/www/;
    
    location / {
      error_page 401 = @auth;
      if ( $auth = "on" ){
        return 401;
      }
    }

    location @auth {
      auth_basic "restricted";
      auth_basic_user_file /path/to/.htpasswd;
    }

...

Разумеется, можно через rewrite, но мне так нравится больше.

m0use
()
Ответ на: комментарий от m0use

Сделал по твоему варианту, правда, без рерайта не обошлось всё равно. Можешь дать жид свой, хочу пару вопросов ещё спросить.

Спасибо!

GreyDoom ★★★★
() автор топика
Ответ на: комментарий от m0use

Уже не использую, не огорчайся (:

GreyDoom ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.