When we use Nginx, it happends that we want to restrict the access to some URL and/or endpoints. So, to do it, we need to setup an authentication in Nginx, and it is what we will see today.
Htpasswd file
To let users being able to log-in, Nginx must have a file called htpasswd which will contains the name of each user and its password with the following format :
user1:password1
user2:password2
...
User names are in clear text, but passwords are encrypted with BCrypt.
The easiest way to generate this file is to use the tool htpasswd.
Install htpasswd
This tool can be found in the apache2-utils package, that you can install with the following commands :
sudo apt-get update
sudo apt-get install apache2-utils
Use htpasswd
The command has the following format :
htpasswd [options] [file path] [user name to add]
The option to know is -c which will help us to create the file.
Then, you just need to use the command to add each user to want!
Example
# Create the file & add the user toto
htpasswd -c /etc/nginx/htpasswd toto
# Add another user to an existing file
htpasswd /etc/nginx/htpasswd titi
Configure Nginx
The last step is to configure you Nginx instance. So in your configuration file, add both auth_basic & auth_basic_user_file parameters like in the following example and it should be good!
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
II hope it will help you ! 🍺When we use Nginx, it happends that we want to restrict the access to some URL and/or endpoints. So, to do it, we need to setup an authentication in Nginx, and it is what we will see today.
Htpasswd file
To let users being able to log-in, Nginx must have a file called htpasswd which will contains the name of each user and its password with the following format :
user1:password1
user2:password2
...
User names are in clear text, but passwords are encrypted with BCrypt.
The easiest way to generate this file is to use the tool htpasswd.
Install htpasswd
This tool can be found in the apache2-utils package, that you can install with the following commands :
sudo apt-get update
sudo apt-get install apache2-utils
Use htpasswd
The command has the following format :
htpasswd [options] [file path] [user name to add]
The option to know is -c which will help us to create the file.
Then, you just need to use the command to add each user to want!
Example
# Create the file & add the user toto
htpasswd -c /etc/nginx/htpasswd toto
# Add another user to an existing file
htpasswd /etc/nginx/htpasswd titi
Configure Nginx
The last step is to configure you Nginx instance. So in your configuration file, add both auth_basic & auth_basic_user_file parameters like in the following example and it should be good!
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ =404;
auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
II hope it will help you ! 🍺

Top comments (0)