HTTP Basic Auth with nginx on CentOS 7
The other day I decided to set up a fresh VPS for few of my small apps. Essentially it’s a CentOs 7 box with nginx which serves one static site when requests come on one domain (in few different contexts/locations with different settings for each of them) and proxies traffic to a Node app on a different domain.
Since CentOS7 doesn’t have httpd-tools package installed by default we’ll need to install that first:
yum -y install httpd-tools
Next - use it to generate password. We will want to output this to a .htpasswd file. Assuming username “exampleuser”:
htpasswd -c /etc/nginx/.htpasswd exampleuser
This will prompt you for password which will be later encrypted.
Then add these two lines to your nginx config (location or server block):
auth_basic "Restricted"; auth_basic_user_file /your-app-path/.htpasswd;
Restart nginx to pick up the changes and you should be asked for password when you next try to reach that URL.
sudo systemctl restart nginx
Extra reading: https://www.digitalocean.com/community/tutorials/how-to-set-up-http-authentication-with-nginx-on-ubuntu-12-10