Как ограничить доступ к каталогу /app/ на Nginx?
Как настроить парольную защиту каталога с аутентификацией Nginx .htpasswd в Linux или Unix-подобных системах?
Нам нужно защитить различные каталоги или конечные точки на Nginx.
Например, я часто защищаю паролем и ограничиваю доступ с помощью IP-адреса, пока мой проект не будет готов к запуску.
В этом руководстве объясняется, как защитить паролем каталоги или URL-адреса, такие как /app/, на веб-сервере Nginx, работающем в Linux или Unix-подобных системах.
- Как защитить паролем каталог с аутентификацией Nginx .htpasswd
- Шаг 1. Установите зависимости, необходимые для настройки аутентификации по поролю на Nginx.
- Шаг 2 – Отредактируйте конфигурацию Nginx
- Шаг 3 – Создание файла паролей
- Шаг 4 – Перезапуск или перезагрузка сервера Nginx
- Шаг 5 – Протестируйте настройку
- Защита паролем каталогов Nginx и ограничение IP-адреса/CIDR
- Заключение
Как защитить паролем каталог с аутентификацией Nginx .htpasswd
Порядок действий следующий:
- Откройте приложение терминала
- Войдите на свой сервер с помощью команды ssh (ssh user @ ec2-cloud-server-ip)
- Отредактируйте файл nginx.conf и добавьте директивы конфигурации HTTP basic auth: auth_basic “Restricted Access Only”;
- Убедитесь, что вы настроили файл .htpasswd: auth_basic_user_file /etc/nginx/.htpasswd;
- Создайте новый файл .htpasswd и добавьте первое имя пользователя и пароль: htpasswd -c /etc/nginx/.htpasswd user
- Перезагрузите сервер Nginx: nginx -s reload
Давайте подробно рассмотрим все команды и примеры для настройки аутентификации по паролю на Nginx.
Шаг 1. Установите зависимости, необходимые для настройки аутентификации по поролю на Nginx.
Вам необходимо установить команду htpasswd.
Он не является частью веб-сервера Nginx.
Но это зависимость, необходимая для ограничения доступа с помощью базовой аутентификации HTTP в соответствии с вашим дистрибутивом Linux / Unix.
Следовательно, введите команду:
Debian/Ubuntu Linux используя apt ## sudo apt install apache2-utils ## Fedora/RHEL 8.x используя dnf ## sudo dnf install httpd-tools ## CentOS/RHEL 7.x используя dnf ## sudo yum install httpd-tools ## Alpine Linux используя apk ## sudo apk add apache2-utils
Шаг 2 – Отредактируйте конфигурацию Nginx
Отредактируйте /etc/nginx/nginx.conf или файл конфигурации виртуального домена, например файл www.itsecforu.ru.conf:
location / { try_files $uri $uri/ /index.php?$query_string; auth_basic "ADMIN Login"; auth_basic_user_file /etc/nginx/.htpasswd-itsecforu.ru; }
location /app/ { auth_basic "Restricted and Password Protected App"; auth_basic_user_file /etc/nginx/.htpasswd-itsecforu.ru; }
Шаг 3 – Создание файла паролей
Используйте команду htpasswd для создания нового файла /etc/nginx/.htpasswd-itsecforu.ru следующим образом:
# htpasswd -c {/path/to/.htpasswd-file} {userName} # htpasswd -c /etc/nginx/.htpasswd-itsecforu.ru admin
Хотите создать дополнительных пользователей ?
# htpasswd /etc/nginx/.htpasswd-itsecforu.ru user2 # htpasswd /etc/nginx/.htpasswd-itsecforu.ru user3
Давайте убедимся, что файл содержит имена пользователей и зашифрованные пароли следующим образом, используя команду cat:# cat /etc/nginx/.htpasswd-itsecforu.ru
Шаг 4 – Перезапуск или перезагрузка сервера Nginx
Проверьте сервер на наличие ошибок:
# nginx -t
Если нет ошибок, перезагрузите или перезапустите веб-сервер nginx, введите:
# nginx -s reload
Шаг 5 – Протестируйте настройку
Защита паролем каталогов Nginx и ограничение IP-адреса/CIDR
Мы можем настроить безопасность нашего веб сервера, объединив базовую аутентификацию Nginx HTTP с ограничением доступа по IP-адресу или CIDR.
Отредактируйте файл конфигурации Nginx:
location / { try_files $uri $uri/ /index.php?$query_string; satisfy all; auth_basic "ADMIN Login"; auth_basic_user_file /etc/nginx/.htpasswd-itsecforu.ru; allow 202.54.1.2; allow 10.8.1.0/24; deny all; }