Итого, вводные данные. Что нам надо в продолжении экспериментов с WordPress. Прикроем доступ из дикого интернета к нашему стэйджу. Откроем доступ с известных нам ip-адресов, а все прочие запросы поставим на basic-авторизацию.
Устанавливаем утилиту для управления паролями basic-auth для Nginx и Apache она одна.
# aptitude install apache2-utils
Генерируем пароль.
# htpasswd -c /etc/nginx/.htpasswd admin
Если требуется добавить пользователя в существующий файл, то просто убираем флаг -c.
# htpasswd /etc/nginx/.htpasswd admin2
Файл с паролями мы создали и теперь немного модернизируем Nginx Vhost-конфигурацию и разрешим беспарольный доступ с определенных IP-адресов, а для всех адресов не включенных в белый список доступ к сайту по паролю.
Например, чистая Basic-авторизация будет выглядеть вот так.
auth_basic "Administrator’s Area";
auth_basic_user_file /etc/nginx/.htpasswd;
А с использованием белых списков немного сложнее.
satisfy any;
allow 37.194.5.244/32;
allow 10.212.1.0/24;
allow 127.0.0.1;
deny all;
auth_basic "Administrator’s Area";
auth_basic_user_file /etc/nginx/.htpasswd;
Еще можно сделать satisfy all и тогда потребуется совпадение двух условий и адреса и еще пароль будет запрашиваться, но это уже какой-то хардкор.