HTTP basic authentication will allow you to secure parts (or all) of your website with a user name and password without the trouble of php or javascript.
+ +Installation
+We will be using the command htpasswd to make username and password pairs.
apt install apache2-utils
+
+
+ + Now think of a username and password and remember them. +
+ +htpasswd -c /etc/apache2/myusers username
+
+ + Type out your password twice to confirm. You can do this as many times as you'd like. +
+Check out user name password pairs:
+cat /etc/apache2/myusers
+
+ Nginx Config and Auth Basic
+
+ From here, we are going to edit our websites config file in /etc/nginx/sites-enabled.
+ Have in mind which folder you'd like to secure. Add something like this:
+
server {
+ #...
+ location /secret-folder {
+ auth_basic "What's the Password?" ;
+ auth_basic_user_file /etc/apache2/myusers ;
+ }
+ #...
+}
+
+
+ If you'd like to do the opposite, such as making the entire site private except for a public section, do this:
+server {
+ #...
+ auth_basic "What's the Password?" ;
+ auth_basic_user_file /etc/apache2/myusers ;
+ location /public/ {
+ #...
+ auth_basic off ;
+ }
+ #...
+}
+ IP Addresses
+If passwords aren't enough we can ban an ip or accept one.
+location /api {
+ #...
+ allow 192.168.1.23:8080 ;
+ deny 127.0.0.1 ;
+}
+ If you want to check both a username and password with an ip address, use the satisfy directive.
location /api {
+ #...
+ satify all ;
+
+ allow 192.168.1.23:8080 ;
+ deny 127.0.0.1 ;
+
+ auth_basic "What's the Password?" ;
+ auth_basic_user_file /etc/apache2/myusers ;
+}
+ Complete Example
+http {
+ server {
+ listen 80;
+ root /var/www/website ;
+
+ #...
+ location /secret-folder {
+ satisfy all ;
+
+ allow 192.168.1.3/24;
+ deny 127.0.0.1 ;
+
+ auth_basic "What's the Password?" ;
+ auth_basic_user_file /etc/apache2/myusers ;
+ }
+ }
+}
+
+
+ Now check your configuration with nginx -t
+
Reload nginx and you're good to go!
+ + + + + + + + + + + + Contributor - tomfasano.xyz + + +