Назад | Перейти на главную страницу

Nginx авторизация только для указанного местоположения

Я использую Nginx в качестве обратного прокси для веб-приложения WSGI на Python.

Выглядит это примерно так:

location / {
    #auth_basic     "Administrator Login";
    #auth_basic_user_file  /var/www/static/.htpasswd;
    proxy_pass          http://mywebapp_gunicorn;
    proxy_redirect      off;
    proxy_set_header    Host            $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
}

Внутри веб-приложения у меня есть несколько страниц для администраторов, которые я хотел бы очень защитить, поэтому теперь я использую некоторую аутентификацию внутри веб-приложения для их защиты, я также хотел бы добавить Nginx auth.

Как активировать:

    auth_basic      "Administrator Login";
    auth_basic_user_file  /var/www/static/.htpasswd;

Для пути: /managers, но не для всех остальных URL.

Вам просто нужно добавить еще один блок местоположения перед тот, который у вас есть, чтобы соответствовать URL-адресу, который вы хотите защитить.

location /managers {
    auth_basic      "Administrator Login";
    auth_basic_user_file  /var/www/static/.htpasswd;
    proxy_pass          http://mywebapp_gunicorn;
    proxy_redirect      off;
    proxy_set_header    Host            $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
}

location / {
    proxy_pass          http://mywebapp_gunicorn;
    proxy_redirect      off;
    proxy_set_header    Host            $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
}

Потому что это до / один, он будет использоваться преимущественно для пути / менеджеров.