Ограничение доступа http
Общие положения
Доступ к серверу может быть ограничен по имени и паролю и дополнительно по ip адресу или по графическому местоположению.
Создание файла паролей
Чтобы создать пары имя пользователя и пароль, используйте утилиту для создания файла паролей, например, apache2-utils, указав пользователя и пароль
apk add apache2-utils
# htpasswd -c .passwd admin
New password:
Re-type new password:
Adding password for user admin
1. Внутри местоположения, указать директиву auth_basic и дать имя области, защищенной паролем
2. Указать директиву auth_basic_user_file с путем к файлу .htpasswd, который содержит пары пользователь/пароль:
3. Можно ограничить доступ ко всему веб-сайту с помощью базовой аутентификации, но при этом сделать некоторые разделы веб-сайта общедоступными. В этом случае укажите параметр off директивы auth_basic, который отменяет наследование от верхних уровней конфигурации
server {
...
auth_basic "Administrator’s Area";
auth_basic_user_file conf/htpasswd;
location /public/ {
auth_basic off;
}
}
Пользователь должен быть либо аутентифицирован, либо иметь действительный IP-адрес
Ограничение доступа по IP-адресу с помощью директив allow и deny:
deny 192.168.1.2;
allow 192.168.1.1/24;
allow 127.0.0.1;
deny all;
Объединение ограничения по IP и HTTP-аутентификации с директивой satisfy. Если задать этой директиве значение для всех, доступ предоставляется, если клиент удовлетворяет обоим условиям. Если задать директиве значение any, доступ предоставляется, если клиент удовлетворяет хотя бы одному условию:
ocation /api {
#...
satisfy all;
deny 192.168.1.2;
allow 192.168.1.1/24;
allow 127.0.0.1;
deny all;
auth_basic "Administrator’s Area";
auth_basic_user_file conf/htpasswd;
}
Если указанные имя и пароль не совпадают с файлом паролей, вы получите сообщение об ошибке 401 (Требуется авторизация)
Пример ограничения доступа
Разрешить доступ к API только из локальной сети:
server {
listen 192.168.1.23;
# ...
location /api {
api write=on;
allow 192.168.1.0/24;
deny all;
}
Директива api отвечает за серверный блок, который будет отвечать за API
Источники
Связанные темы
Оптимизация производительности
Настройка виртуального сервера Nginx