Jak nakonfigurovat základní ověřování HTTP v Nginx
Základní HTTP autentizace je bezpečnostní mechanismus, který omezuje přístup k vaší webové stránce/aplikaci nebo k některým jejím částem nastavením jednoduchého ověření uživatelského jména/hesla. Lze jej použít v podstatě k ochraně celého HTTP serveru, jednotlivých bloků serveru (virtuálních hostitelů v Apache) nebo bloků umístění.
Přečtěte si také: Jak nastavit virtuální hostitele založené na názvech a IP (bloky serveru) pomocí NGINX
Jak název napovídá, není to bezpečná metoda, na kterou by se dalo spoléhat; měli byste jej používat ve spojení s dalšími spolehlivějšími bezpečnostními opatřeními. Pokud například vaše webová aplikace běží na HTTP, pak se uživatelské údaje přenášejí v prostém textu, takže byste měli zvážit povolení HTTPS.
Účelem této příručky je pomoci vám přidat malou, ale užitečnou vrstvu zabezpečení k ochraně soukromého/privilegovaného obsahu ve vašich webových aplikacích (jako jsou, ale nikoli pouze administrátorské strany). Můžete jej také použít k zamezení přístupu k webové stránce nebo aplikaci, která je stále ve fázi vývoje.
Požadavky
- Nainstalujte LEMP Stack v CentOS/RHEL 7
- Nainstalujte LEMP Stack v Ubuntu/Debianu
Vytvořte soubor uživatele pro ověřování HTTP
Měli byste začít vytvořením souboru, který bude ukládat páry uživatelské jméno:heslo
. K vytvoření tohoto souboru použijeme nástroj htpasswd ze serveru Apache HTTP Server.
Nejprve zkontrolujte, zda jsou ve vašem systému nainstalovány balíčky apache2-utils nebo httpd-tools, které poskytují nástroj htpasswd, jinak spusťte příslušný příkaz pro vaši distribuci k instalaci:
yum install httpd-tools [RHEL/CentOS]
sudo apt install apache2-utils [Debian/Ubuntu]
Dále spusťte příkaz htpasswd níže a vytvořte soubor s hesly s prvním uživatelem. Možnost -c
se používá k zadání souboru passwd, jakmile stisknete [Enter], budete požádáni o zadání uživatelského hesla.
htpasswd -c /etc/nginx/conf.d/.htpasswd developer
Přidejte druhého uživatele a nepoužívejte zde volbu -c
.
htpasswd /etc/nginx/conf.d/.htpasswd admin
Nyní, když máte připravený soubor s hesly, pokračujte v konfiguraci částí vašeho webového serveru, ke kterým chcete omezit přístup. Chcete-li zobrazit obsah souboru s hesly (který zahrnuje uživatelská jména a šifrovaná hesla), použijte níže uvedený příkaz cat.
cat /etc/nginx/conf.d/.htpasswd
Nakonfigurujte ověřování HTTP pro Nginx
Jak jsme zmínili dříve, můžete omezit přístup k vašemu webovému serveru, jedné webové stránce (pomocí jejího bloku serveru) nebo direktivě umístění. K tomu lze použít dvě užitečné směrnice.
- auth_basic – zapne ověření uživatelského jména a hesla pomocí protokolu „HTTP Basic Authentication “.
- auth_basic_user_file – určuje soubor s hesly.
Virtuální hostitelé Nginx chránit heslem
Chcete-li implementovat základní ověřování pro celý webový server, které se vztahuje na všechny bloky serveru, otevřete soubor /etc/nginx/nginx.conf a přidejte do kontextu http následující řádky:
http{
auth_basic "Restricted Access!";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
……...
}
Ochrana webu nebo domény Nginx heslem
Chcete-li povolit základní ověřování pro konkrétní doménu nebo subdoménu, otevřete její konfigurační soubor pod /etc/nginx/conf.d/ nebo /etc/nginx/conf/sites-available (v závislosti na tom, jak jste Nginx nainstalovali), poté přidejte konfiguraci níže do bloku serveru nebo kontextu:
server {
listen 80;
server_name example.com;
auth_basic "Restricted Access!";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
location / {
……..
}
……...
}
Webový adresář chráněný heslem v Nginx
Můžete také povolit základní ověřování v rámci direktivy umístění. V níže uvedeném příkladu budou všichni uživatelé pokoušející se o přístup k bloku umístění /admin
požádáni o ověření.
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
}
……..
}
Pokud jste nakonfigurovali základní ověřování HTTP, všichni uživatelé, kteří se pokusí o přístup k vašemu webovému serveru nebo subdoméně nebo konkrétní části webu (v závislosti na tom, kde jste je implementovali), budou požádáni o uživatelské jméno a heslo, jak je znázorněno na obrázku níže. .
V případě neúspěšného ověření uživatele se zobrazí chyba „401 Vyžaduje autorizaci“, jak je uvedeno níže.
Další informace naleznete v tématu omezení přístupu pomocí základního ověřování HTTP.
Možná byste si také rádi přečetli tyto užitečné příručky související se serverem Nginx HTTP.
- Jak chránit heslem webové adresáře v Nginx
- Dokonalý průvodce zabezpečením, zpevněním a zlepšením výkonu Nginx
- Nastavení HTTPS pomocí Let's Encrypt SSL certifikátu pro Nginx
V této příručce jsme ukázali, jak implementovat základní ověřování HTTP na webovém serveru Nginx HTTP. Chcete-li se zeptat na jakékoli otázky, použijte formulář pro zpětnou vazbu níže.