Для начала открываем файл nginx.conf и ищем там следующие строки:
location / { root html; index index.html index.htm; }
И заменяем их на следующее:
location / { auth_basic "closed site"; auth_basic_user_file htpasswd; root html; index index.html index.htm; }
Рестартанув Нджинкс, можно увидеть, что при открытии сайта выскакивает окошечко требующее авторизацию. Теперь нам нужно создать файл с логинами и паролями пользователей, имеющих доступ к данной страничке.
Файл паролей положим в папку conf -- conf/htpasswd, его формат таков:
# комментарийПароли генерируются функцией crypt, также для их создания можно воспользоваться утилитой от веб сервера Apache -- htpasswd, ей мы и воспользуемся.
имя1:пароль1
имя2:пароль2:комментарий
имя3:пароль3
sudo htpasswd -cbd htpasswd nrg 12345"-d" -- выбираем криптофункцию "crypt"
"-b" -- указываем считывание имени файла с паролями с командной строки
"-c" -- указываем создать новый файл
htpasswd -- имя вновь создаваемого файла
nrg -- имя добавляемого туда пользователя
12345 -- пароль пользователя
В итоге получаем файлик следующего содержания:
nrg:G8XDed1YWlwlMИ рестартим Нджинкс, после этого при попытке открыть главную страницу сайта должна выскакивать страница авторизации :)
Хм, а вот интересно, можно ли подружить Nginx c PAM или LDAP? А-то держать полтора десятка баз пользователей никакого удовольствия, а так можно было бы все сложить в одну базу. Если у кого есть мысли на этот счет, буду благодарен, если оставите их в комментах (:
Можно, есть ngx_http_auth_pam_module:
ReplyDeletehttp://web.iti.upv.es/~sto/nginx/ngx_http_auth_pam_module-1.1.tar.gz
Круто, спасибо!
ReplyDelete