Зачем может быть нужна basic authentification?
Иногда необходимо выставить какой-либо web ресурс для просмотра извне, но не хочется, чтобы все имели возможность смотреть содержимое.
В таком случае есть несколько вариантов, как поступить, но самый простой - поставить парольную защиту в nginx.
Cоздайте файла с паролями (.htpasswd):
Создайте файл .htpasswd по указанному пути:
sudo touch /etc/nginx/.htpasswd
Поменяйте владельца этого файла на того, под кем сейчас работаете в терминале:
sudo chown $(whoami) /etc/nginx/.htpasswd
Сгенерируйте хэшированный пароль и запишите в указанный файл (не забудьте поменять username на нужный вам логин - он может быть любым):
printf "username:$(openssl passwd -apr1)\n" > /etc/nginx/.htpasswd
Надо будет придумать и дважды ввести пароль для подтверждения.
Измените конфигурацию Nginx:
Отредактируйте конфигурационный файл Nginx:
sudo nano /etc/nginx/sites-available/example.com
Внутри блока server добавьте следующие строки:
server {
listen 80;
server_name example.com www.example.com;
location / {
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://ip-address-with-web-content/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
В этом файле описан простой реверс прокси, о котором говорилось тут.
Перезапустите Nginx:
После внесения изменений в конфигурацию, перезапустите Nginx:
sudo service nginx restart
или
sudo nginx -s reload
Теперь ваш сайт будет защищен базовой аутентификацией, а пользователям будет выводиться запрос на ввод логина и пароль при попытке доступа к сайту.