Misschien heb je er nooit bij stilgestaan wat Auth Basic is, maar je bent het zeker tegengekomen wanneer je de instellingen van je router raadpleegde. Dit noemen ze het mechanisme van autorisatie door gebruikersnaam en wachtwoord op webserverniveau. Dergelijke autorisatie wordt ondersteund in zowel Apache als Nginx. In deze instructie stellen we voor om na te denken over hoe Auth Basic te configureren voor een specifieke route of een specifieke site.
Zo ziet het Auth Basic autorisatievenster eruit:
Nu zou je moeten begrijpen waar deze instructie over gaat. Het is mogelijk om autorisatie te configureren voor een specifieke URL, voor de hele site of voor alle sites. Maar eerst moeten we een bestand maken met een lijst van gebruikers en wachtwoorden. Hiervoor gebruiken we het hulpprogramma htpasswd. De syntaxis van het commando is als volgt:
$ sudo htpasswd -c /path/to/file username
In dit geval wordt de -c optie gebruikt om een nieuw bestand aan te maken, je hoeft het niet te gebruiken om eerder aangemaakte bestanden te bewerken. Bijvoorbeeld:
$ sudo htpasswd -c /etc/nginx/auth.basic admin
Het programma zal een dubbele wachtwoordaanvraag doen. Om veiligheidsredenen wordt het wachtwoord niet weergegeven, maar wel ingevoerd. Als je eenmaal zo'n bestand hebt gemaakt, kun je direct naar de configuratie van Nginx gaan.
Om alle bronnen met een wachtwoord te beveiligen, moet je een richtlijn toevoegen aan de http
sectie van het bestand /etc/nginx/nginx.conf
:
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/auth.basic;
Om een specifiek pagina-adres (URL) te beveiligen, moet je een richtlijn toevoegen aan het corresponderende locatieblok. Dit kan /wp-admin/admin-ajax.php
zijn:
location /wp-admin/admin-ajax.php {
auth_basic "Restricted area";
auth_basic_user_file /etc/nginx/auth.basic;
}
Als de site op WordPress staat, kun je de locatie
het beste in location/
plaatsen. Alle hierboven beschreven regels zullen werken, plus bescherming wordt geboden. Als u toegang moet verlenen voor een specifieke locatie
, ziet de richtlijn eruit als auth_basic "off"
:
location /wp-admin/admin-ajax.php {
auth_basic "off";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9002;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
PHP-verwerking moet worden toegevoegd aan het locatieblok
, anders wordt de gebruiker gevraagd om het script te downloaden dat hij opent.
Het instellen van toegang in Nginx is dus niet al te moeilijk. Je moet alleen het locatieblok correct configureren.