Almost Over

Сгенерировать htpasswd для NGINX или Apache

Сгенерировать htpasswd для NGINX или Apache

htpasswd для NGINX

$ php -r 'echo crypt("your_password", "salt");'

Где your_password - ваш пароль, salt - соль для пароля (должна содержать минимум 2(!!!) символа из набора “./0-9A-Za-z”).
ПРИМЕЧАНИЕ: если на сервере отсутствует PHP, то можно воспользоваться внешним онлайн сервисом: seriyps.ru/crypt/htpasswd.

Cоздаём файл htpasswd

$ nano /var/www/htpasswd

И вписываем в него данные формата user:pass.
Обратите внимание, что сам файл расположен в директории /var/www, т.е. на уровень выше всех сайтов. Соответственно, доступ к этому файлу возможен только на уровне сервера.

Редактируем конфиг хоста

$ nano /etc/nginx/sites/%site.com%

И прописываем в необходимый нам блок location саму авторизацию

1
2
3
4
5
location /admin {
auth_basic "Unauthorized";
auth_basic_user_file /var/www/htpasswd;
#autoindex on; # для режима просмотра файлов и директорий
}

$ service nginx reload

Проверяем авторизацию

almostover.ru/admin
User: admin
Pass: test

При правильном вводе данных авторизации должна всплыть 404-ая ошибка (т.к. данный каталог отсутствует в движке Hexo).
При отмене ввода - 401-ая (Authorization Required).


htpasswd для Apache

$ php -r 'echo crypt("your_password", base64_encode("your_password"));'

Также, можно воспользоваться внешним онлайн сервисом: www.joeswebtools.com/security/htpasswd-generator.

Cоздаём файл .htpasswd

$ nano /var/www/%site.com%/.htpasswd

И вписываем в него данные формата user:pass.

Cоздаём файл .htaccess

$ nano /var/www/%site.com%/.htaccess
1
2
3
4
AuthUserFile /var/www/%site.com%/.htpasswd
AuthName "Unauthorized"
AuthType Basic
Require valid-user