Nginx с Gunicorn с двойной авторизацией - PullRequest
0 голосов
/ 03 декабря 2018

Я хочу использовать http auth, но также и обратный прокси-сервер с использованием gunicorn.

Для http auth я использую:

location = admin.html {
 auth_basic 'Login Required'
 auth_basic__use_file etc/nginx/.htpasswd;
}

для gunicorn, обратный прокси-сервер я нашел:

try_files $uri @gunicorn;

Как я могу объединить оба?

1 Ответ

0 голосов
/ 07 декабря 2018

Вы хотите использовать nginx в качестве обратного прокси-сервера для django с дополнительным уровнем авторизации?Вы просто перемещаете директивы auth_basic и auth_basic_user_file из блока location в блок server:

upstream gunicorn_server {
    server unix:</path/to/socket/pseudo/file>;
}

server {
    listen ...;
    server_name ...;
    auth_basic "Login Required";
    auth_basic_user_file etc/nginx/.htpasswd;
    ... # other parameters
    location / {
        try_files $uri @gunicorn;
    }
    location @gunicorn {
        proxy_pass http://gunicorn_server;
    }
}

Обновление

Предполагая, что есть "область администратора ", которая включает в себя /admin.html и /admin/any/other/uri для дополнительной защиты этой области с помощью HTTP Basic Auth, вы можете использовать следующую конфигурацию:

upstream gunicorn_server {
    server unix:</path/to/socket/pseudo/file>;
}

server {
    listen ...;
    server_name ...;
    ... # other parameters
    location / {
        try_files $uri @gunicorn;
    }
    location /admin {
        auth_basic "Login Required";
        auth_basic_user_file etc/nginx/.htpasswd;
        try_files $uri @gunicorn;
    }
    location @gunicorn {
        proxy_pass http://gunicorn_server;
    }
}

Для защиты одного файла admin.html заменить location /admin { наlocation = /admin.html {.

...