Password for file / directory NGINX web server in Centos / Ubuntu

Consider the process of configuring password access to a directory or file on the NGINX web server using a virtual machine from a company as an example “Cloud”

A series of articles on installing and configuring the NGINX web server

  • Installing NGINX web server for working with virtual hosts, PHP-FPM in Sock mode, MariaDB Mysql server on Centos 7
  • Password for file / directory NGINX web server in Centos / Ubuntu
  • Enabling SSL in NGINX on Centos 7
  • Free SSL and Widacard SSL certificate from Let’s Encrypt, NGINX connection and auto-renewal on Centos 7

In order to make password access to the directory of the NGINX web server, you first need to generate a file with the username / password .htpasswd This can be done using a utility from the Apache web server, or using php, or using bash.

Install the utility from the Apache web server:

For Centos:

[[email protected]]# yum install httpd-tools

For Ubuntu / Debian:

[[email protected]]# sudo apt-get install apache2-utils

Let’s generate a password:

[[email protected]]# htpasswd -c /var/www/example.ru/public_html/.htpasswd username

где:
/var/www/example.ru/public_html/ – путь к каталогу
username – имя пользователя, которое мы будем использовать для аутентификации

Let’s generate a password for the .htpasswd file using php:

[[email protected]]# php -r 'echo crypt("your_password", "salt");'

где:
your_password - ваш пароль
salt - соль для пароля, должна содержать минимум 2 символа из набора “0-9 A-Z a-z”

Next, we need to create the .htpasswd file itself and enter data in it in the format:

username:password

где:
username – имя пользователя, которое мы будем использовать для аутентификации
password - наш сгенерированный пароль

Let’s generate a .htpasswd file using bash:

[[email protected]]# printf "USER:$(openssl passwd -crypt PASSWORD)n" >> /var/www/example.ru/public_html/.htpasswd

где:
USER – имя пользователя, которое мы будем использовать для аутентификации
PASSWORD - наш пароль
/var/www/example.ru/public_html/ - каталог, куда сохранится файл

I used this exact method

Editing the NGINX configuration file, in this case our virtual host

[[email protected]]# nano /etc/nginx/sites-available/example.ru.conf
. . .
location /test {
        auth_basic "Password-protected Area";
        auth_basic_user_file /etc/nginx/.htpasswd;
	#autoindex on; # для режима просмотра файлов и директорий
}

We check the correctness of the settings and restart the web server

[[email protected]]# nginx -t
[[email protected]]# service nginx restart

For example, to close the wp-admin directory, specify in the server block:

location = /wp-login.php {
        
        auth_basic "Restricted";
        auth_basic_user_file /var/www/example.ru/public_html/.htpasswd;
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }
Sidebar