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
+30.1k Get client IP Address in Go
+11.9k Golang : convert(cast) string to integer value
+20.5k Golang : Underscore or snake_case to camel case example
+19.3k Golang : Close channel after ticker stopped example
+17.2k Golang : Multi threading or run two processes or more example
+6.9k Golang : Use modern ciphers only in secure connection
+12.3k Golang : Arithmetic operation with numerical slices or arrays example
+12.4k Golang : Drop cookie to visitor's browser and http.SetCookie() example
+5.2k Golang : Reclaim memory occupied by make() example
+18.3k Golang : Send email with attachment
+19.9k Golang : How to get struct tag and use field name to retrieve data?
+6.5k Golang : Output or print out JSON stream/encoded data