Hvordan konfigurere grunnleggende HTTP-autentisering i Nginx
Grunnleggende HTTP-autentisering er en sikkerhetsmekanisme for å begrense tilgangen til nettstedet/applikasjonen eller noen deler av den ved å sette opp enkel brukernavn/passordautentisering. Den kan hovedsakelig brukes til å beskytte hele HTTP-serveren, individuelle serverblokker (virtuelle verter i Apache) eller lokasjonsblokker.
Som navnet antyder, er det ikke en sikker metode å stole på; du bør bruke den sammen med andre mer pålitelige sikkerhetstiltak. For eksempel, hvis nettapplikasjonen din kjører på HTTP, overføres brukerlegitimasjonen i ren tekst, så du bør vurdere å aktivere HTTPS.
Hensikten med denne veiledningen er å hjelpe deg å legge til et lite, men nyttig lag med sikkerhet for å beskytte privat/privilegert innhold på nettapplikasjonene dine (som, men ikke begrenset til administratorsidene). Du kan også bruke den til å hindre tilgang til en nettside eller applikasjon som fortsatt er i utviklingsfasen.
- Installer LEMP Stack i CentOS/RHEL 7
- Installer LEMP Stack i Ubuntu/Debian
Opprett brukerfil for HTTP-autentisering
Du bør starte med å lage en fil som vil lagre brukernavn:passord
-par. Vi vil bruke htpasswd-verktøyet fra Apache HTTP Server for å lage denne filen.
Kontroller først at apache2-utils eller httpd-tools, pakkene som gir htpasswd-verktøyet er installert på systemet ditt, ellers kjør den riktige kommandoen for distribusjonen din for å installere den:
# yum install httpd-tools [RHEL/CentOS] $ sudo apt install apache2-utils [Debian/Ubuntu]
Deretter kjører du htpasswd-kommandoen nedenfor for å lage passordfilen med den første brukeren. Alternativet -c
brukes til å spesifisere passwd-filen, når du trykker på [Enter], vil du bli bedt om å skrive inn brukerpassordet.
# htpasswd -c /etc/nginx/conf.d/.htpasswd developer
Legg til en annen bruker, og ikke bruk -c
-alternativet her.
# htpasswd /etc/nginx/conf.d/.htpasswd admin
Nå som du har passordfilen klar, fortsett å konfigurere delene av webserveren du vil begrense tilgangen til. For å se passordfilinnholdet (som inkluderer brukernavn og krypterte passord), bruk cat-kommandoen nedenfor.
# cat /etc/nginx/conf.d/.htpasswd
Konfigurer HTTP-autentisering for Nginx
Som vi nevnte tidligere, kan du begrense tilgangen til webserveren din, et enkelt nettsted (ved å bruke serverblokken) eller et stedsdirektiv. To nyttige direktiver kan brukes for å oppnå dette.
- auth_basic – slår på validering av brukernavn og passord ved hjelp av «HTTP Basic Authentication»-protokollen.
- auth_basic_user_file – spesifiserer passordfilen.
For å implementere grunnleggende autentisering for hele webserveren, som gjelder for alle serverblokker, åpner du filen /etc/nginx/nginx.conf og legger til linjene nedenfor i http-konteksten:
http{ auth_basic "Restricted Access!"; auth_basic_user_file /etc/nginx/conf.d/.htpasswd; ……... }
For å aktivere grunnleggende autentisering for et bestemt domene eller underdomene, åpne konfigurasjonsfilen under /etc/nginx/conf.d/ eller /etc/nginx/conf/sites-available (avhengig av hvordan du installerte Nginx), og legg deretter til konfigurasjon nedenfor i serverblokk 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 grunnleggende autentisering innenfor et stedsdirektiv. I eksemplet nedenfor vil alle brukere som prøver å få tilgang til /admin
-lokasjonsblokken bli bedt om å autentisere.
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 konfigurert grunnleggende HTTP-autentisering, vil alle brukere som prøver å få tilgang til webserveren din eller et underdomene eller en spesifikk del av et nettsted (avhengig av hvor du implementerte det), bli bedt om et brukernavn og passord som vist i skjermbildet nedenfor .
I tilfelle en mislykket brukerautentisering, vil en \401 Authorization Required-feil vises som vist nedenfor.
Du finner mer informasjon under begrense tilgang med grunnleggende HTTP-autentisering.
Du vil kanskje også lese disse følgende nyttige Nginx HTTP-serverrelaterte guider.
- Hvordan passordbeskytte nettkataloger i Nginx
- Den ultimate guiden for å sikre, herde og forbedre ytelsen til Nginx
- Sett opp HTTPS med Let's Encrypt SSL-sertifikat for Nginx
I denne veiledningen viste vi hvordan du implementerer grunnleggende HTTP-autentisering i Nginx HTTP-nettserver. For å stille spørsmål, bruk tilbakemeldingsskjemaet nedenfor.