Sådan konfigureres grundlæggende HTTP-godkendelse i Nginx


Grundlæggende HTTP-godkendelse er en sikkerhedsmekanisme til at begrænse adgangen til dit websted/din applikation eller nogle dele af den ved at indstille simpel brugernavn/adgangskodegodkendelse. Det kan i det væsentlige bruges til at beskytte hele HTTP-serveren, individuelle serverblokke (virtuelle værter i Apache) eller placeringsblokke.

Som navnet antyder, er det ikke en sikker metode at stole på; du skal bruge den sammen med andre mere pålidelige sikkerhedsforanstaltninger. For eksempel, hvis din webapplikation kører på HTTP, sendes brugeroplysninger i almindelig tekst, så du bør overveje at aktivere HTTPS.

Formålet med denne vejledning er at hjælpe dig med at tilføje et lille, men nyttigt lag af sikkerhed for at beskytte privat/privilegeret indhold på dine webapplikationer (såsom, men ikke begrænset til administratorsider). Du kan også bruge den til at forhindre adgang til et websted eller en applikation, der stadig er i udviklingsfasen.

  1. Installer LEMP Stack i CentOS/RHEL 7
  2. Installer LEMP Stack i Ubuntu/Debian

Opret HTTP-godkendelsesbrugerfil

Du skal starte med at oprette en fil, der gemmer brugernavn: adgangskode par. Vi bruger htpasswd-værktøjet fra Apache HTTP Server til at oprette denne fil.

Kontroller først, at apache2-utils eller httpd-tools, de pakker, der giver htpasswd-værktøjet, er installeret på dit system, ellers kør den relevante kommando til din distribution for at installere det:

# yum install httpd-tools		[RHEL/CentOS]
$ sudo apt install apache2-utils	[Debian/Ubuntu]

Kør derefter htpasswd-kommandoen nedenfor for at oprette adgangskodefilen med den første bruger. Indstillingen -c bruges til at specificere passwd-filen, når du først har trykket på [Enter], bliver du bedt om at indtaste brugeradgangskoden.

# htpasswd -c /etc/nginx/conf.d/.htpasswd developer

Tilføj en anden bruger, og brug ikke indstillingen -c her.

# htpasswd /etc/nginx/conf.d/.htpasswd admin

Nu hvor du har adgangskodefilen klar, skal du fortsætte med at konfigurere de dele af din webserver, som du vil begrænse adgangen til. For at se indholdet af adgangskodefilen (som inkluderer brugernavne og krypterede adgangskoder) skal du bruge kat-kommandoen nedenfor.

# cat /etc/nginx/conf.d/.htpasswd 

Konfigurer HTTP-godkendelse til Nginx

Som vi nævnte tidligere, kan du begrænse adgangen til din webserver, et enkelt websted (ved hjælp af dets serverblok) eller et placeringsdirektiv. To nyttige direktiver kan bruges til at opnå dette.

  • auth_basic - aktiverer validering af brugernavn og adgangskode ved hjælp af "HTTP Basic Authentication" -protokollen.
  • auth_basic_user_file - angiver adgangskodefilen.

For at implementere grundlæggende godkendelse for hele webserveren, som gælder for alle serverblokke, skal du åbne /etc/nginx/nginx.conf-filen og tilføje nedenstående linjer i http-kontekst:

http{
	auth_basic           "Restricted Access!";
    	auth_basic_user_file /etc/nginx/conf.d/.htpasswd; 
	……...
}

For at aktivere grundlæggende godkendelse for et bestemt domæne eller underdomæne skal du åbne dens konfigurationsfil under /etc/nginx/conf.d/ eller/etc/nginx/conf/sites-tilgængelig (afhængigt af hvordan du installerede Nginx) og derefter tilføje konfiguration nedenfor i serverblok eller kontekst:

server {
	listen 			80;
	server_name    	  example.com;
	auth_basic           	"Restricted Access!";
    	auth_basic_user_file 	/etc/nginx/conf.d/.htpasswd; 
	location /  {
		……..
	}
	……...
}

Du kan også aktivere grundlæggende godkendelse inden for et placeringsdirektiv. I eksemplet nedenfor bliver alle brugere, der prøver at få adgang til /admin placeringsblokken, bedt om at godkende.

server {
	listen 			80;
	server_name    	example.com www.example.com;
	
	location / {
		……..
	}
	location /admin/ {
		auth_basic           	"Restricted Access!";
    		auth_basic_user_file 	/etc/nginx/conf.d/.htpasswd; 
	}

	location /public/{
		auth_basic  off;	#turns off basic http authentication off for this block
	}
	……..
}

Hvis du har konfigureret grundlæggende HTTP-godkendelse, vil alle brugere, der forsøger at få adgang til din webserver eller et underdomæne eller en bestemt del af et websted (afhængigt af hvor du implementerede det), blive bedt om et brugernavn og en adgangskode som vist i skærmbilledet nedenfor .

I tilfælde af en mislykket brugergodkendelse vises en “401 autorisation påkrævet” -fejl som vist nedenfor.

Du kan finde flere oplysninger ved at begrænse adgang med grundlæggende HTTP-godkendelse.

Du kan også lide at læse disse følgende nyttige Nginx HTTP-serverrelaterede guider.

  1. Sådan passwordbeskyttes webmapper i Nginx
  2. Den ultimative guide til at sikre, hærde og forbedre ydeevnen af Nginx
  3. Opsætning af HTTPS med Lad os kryptere SSL-certifikat til Nginx

I denne vejledning viste vi, hvordan man implementerer grundlæggende HTTP-godkendelse i Nginx HTTP-webserver. Brug feedbackformularen nedenfor for at stille spørgsmål.