Понадобилось мне запаролить доступ к папке на сервере. На Apache я такое делал, но недавно перешел на Nginx и решил записать себе заметку как это делать на нем. Эта процедура состоит из двух этапов.
Настройка хоста
Итак, у меня есть настроенные виртуальные хосты и для нужного хоста в секцию local мы пишем следующие две строки. Первая — это сообщение пользователю, а вторая — путь к файлу .htpasswd.
location / { auth_basic "Unauthorized"; auth_basic_user_file /www/.htpasswd; } location ~ /\.ht { return 403; }
Последняя же строка отвечает за то, чтобы запретить передачу файлов названия которых похожи на .ht.
Создание .htpasswd
Для генерации пароля можно использовать htpasswd, которая идет вместе с apache:
htpasswd -nd username
username — это имя пользователя.
Тузла два раза запросит пароль и после чего выдаст Вам результат такого вида:
username:oY/3xqwhO7w7E
где
username — имя пользователя
oY — двухсимвольная соль для crypt()
/3xqwhO7w7E — хеш пароля
Этот способ действителен если у Вас все еще есть апач, но если его нет, можно прибегнуть к php:
php -r 'echo crypt("password", "oY");'
После чего мы получим такой же результат.
Сам не проверял, но вот еще вариант для python взятый с просторов инета:
python -c 'import crypt; print crypt.crypt("password", "oY")'
После того, как вы это закончите, надо просто записать строку в файл .htpasswd и перезапустить Nginx:
service nginx restart
Вот и всё, друзья 🙂
16 ноября, 2013 at 4:53 дп
[…] статистики. Как это сделать, можно прочитать тут: http://g13.org.ua/пароль-на-папку-в-nginx/ Подключим […]