Nginx : Password protect a directory/folder
Problem :
You want to protect a directory that only certain individuals with the right password can access via a web browser. How to password protect a directory or folder with Nginx?
Solution :
First you need to create a .htpasswd
file (or other name with a period prefix) and place the file inside the directory.
For example :
/var/www/domain.com/protected/.htpasswd;
Next, generate a password and associate the password to a username. The easiest way is to use the htpasswd
command :
htpasswd -c /var/www/domain.com/protected/.htpasswd username
Or if you prefer to edit the file manually, the .htpasswd
file has the format of :
username:encrypted-password:comment
You can generate the encrypted-password
part with :
http://www.htaccesstools.com/htpasswd-generator/
or with perl command
perl -le 'print crypt("encrypted-password", "salt-hash")'
and typically a .htpasswd
file looks like this :
admin:$apr1$J5kod3nw$B9JK4Wb4xKZly.oC9k5uP0
password for user admin.
Note : the comment part is optional.
Once you have place the .htpasswd
file in the directory that you want to protect. It is time to tell Nginx that the directory is only accessible with the right password.
In the nginx.conf file, under the server block, make the following modification and REMEMBER to modify the server block in HTTPS/SSL part as well if you have one.
server {
listen 80;
server_name domain.com www.domain.com;
location / {
# your other stuff
}
# This will deny access to any hidden file (the file with a .period prefix)
# so that your password will not be accessible from the web browser
location ~ /\. { deny all; }
location /protected {
auth_basic "Entering protected zone. You need to login first.";
auth_basic_user_file /var/www/domain.com/protected/.htpasswd;
}
}
Save the modification to nginx.conf file and restart the Nginx server. Test out to see if everything is working correctly by visiting the protected directory via a web browser and if it is setup correctly, you should see a prompt asking you to enter username and password.
See also : Restart Apache or Nginx web server without password prompt
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+9k Golang : Extract part of string with regular expression
+6.3k Golang : How to get garbage collection data?
+15.8k Golang : Read input from console line
+8.8k Golang : How to run your code only once with sync.Once object
+4.9k Android Studio : Image button and button example
+7.2k Golang : Get current, epoch time and display by year, month and day
+24.9k Golang : Generate random string
+26k Golang : Strip slashes from string example
+4k Golang : Create new color from command line parameters
+4.5k Golang : Set horizontal, vertical scroll bars policies and disable interaction on Qt image
+26.2k Golang : Save image to PNG, JPEG or GIF format.
+13.9k Golang : How to get time from unix nano example