HTTP авторизация — настройка средствами Nginx

Иногда возникает необходимость ограничить доступ к сайту или определенному его разделу на уровне 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.