Иногда возникает необходимость ограничить доступ к сайту или определенному его разделу на уровне HTTP. Для веб-сервера Apache доступ ограничивается через файл .htaccess, который размещается в корне сайта или раздела. http авторизация Nginx задается только непосредственно в конфигурационном файле.
Ограничение может быть необходимо для административной части сайта или служебным ресурсам, к которым нужен веб-доступ — например, таким как мониторинг.
HTTP авторизация Nginx
Чтобы описанные ниже действия принесли результат на сервере должен быть установлен и использоваться в качестве веб-сервера Nginx.
Создаем файл указывая путь к нему и имя пользователя вместо USERNAME
htpasswd -c /etc/nginx/htpasswd.users USERNAME
После выполнения команды возникнет диалог с запросом пароля. После его ввода пароль будет зашифрован и более недоступен в виде открытого текста.
Теперь осталосу указать в конфиге веб-сервера, что нужно использовать созданный только что файл для определенного виртуального хоста — пусть это будет хост, существующий по умолчанию. В качестве имени сайта укажем example.com
mcedit /etc/nginx/sites-available/default
server {
listen 80;
server_name example.com;
auth_basic «Restricted Access»;
auth_basic_user_file /etc/nginx/htpasswd.users;
location / {
..}
}
Проверяем конфигурацию Nginx
nginx -t
Даем команду на перечитывание конфигурационных файлов
nginx -s reload
На этом настройка HTTP авторизации средствами Nginx завершена. Сейчас при обращении к сайту будет открываться диалог, запрашивающий имя пользователя и пароль.
Любая попытка авторизоваться с неверными реквизитами или без них будет заканчиваться ошибкой 400.