Dobrý den, přátelé. V tomto příspěvku budeme pokračovat s některými triky pro Nginx. Dnes se tedy dozvíte, jak omezit přístup k adresáři a podadresáři v Nginx. Jdeme na to.
Za prvé, měli bychom to udělat?
Krátká odpověď je ANO. Rozhodně. Protože v aplikaci nebo na webu existuje mnoho složek, které obsahují citlivé soubory, aby mohla fungovat.
Vzhledem k výše uvedenému je vhodné stanovit pravidla pro zákaz přístupu do těchto složek a zlepšit tak zabezpečení webu.
Tato omezení lze použít podle IP adresy, což nám umožňuje flexibilně použít konfigurace, které potřebujeme.
Je to bez námahy. Jdeme na to.
Předpoklady
Než budeme pokračovat, musíme se ujistit, že splňujeme požadavky na bezproblémové dokončení příspěvku
- Musíte mít nainstalovaný a nakonfigurovaný Nginx. Ujistěte se tedy, že jej máte pomocí oficiálních repozitářů vaší distribuce Linuxu.
- Verze Nginx musí být vyšší než 1.9.5. Neměli byste mít problém ji mít, protože většina distribucí obsahuje nejnovější verze.
- Mějte základní znalosti o používání terminálu.
- Uživatel s přístupem sudo nebo root.
Jdeme na to.
Jak omezit přístup k adresáři a podadresářům v Nginx
Je normální, že na serveru je několik bloků serveru. Pokud však chcete konfiguraci použít globálně nebo nemáte žádnou vytvořenou, musíte upravit /etc/nginx/nginx.conf
– Jinak musíte upravit konfigurační soubor každého bloku serveru. Například,
sudo nano /etc/nginx/sites-enabled/domain.conf
Pro tento příspěvek budu pracovat se složkou nazvanou data
v kořenovém adresáři webu. Relativní cesta by tedy byla /data
.
Direktiva Nginx, která provádí odepření přístupu, je Deny
ale musíme to specifikovat ve skriptu odkazujícím na adresář.
Pokud chcete omezit přístup k tomuto adresáři, musíte jej zahrnout do konfiguračního souboru
location /data {
...
deny all;
...
}
Můžete také omezit přístup na konkrétní IP adresu. Například:
location /data {
...
deny 192.168.2.5;
...
}
Pokud existuje více IP adres, můžete je zadat takto
location /data {
...
deny 192.168.2.5;
deny 192.168.2.9;
...
}
Můžete také použít rozsahy IP adres
location /data {
...
Deny 192.168.1.0/24;
...
}
Uložte změny a zavřete editor. Chcete-li použít změny, restartujte Nginx.
sudo systemctl restart nginx
A máte hotovo.
Adresář chráněný heslem v Nginx
Další užitečnou možností je přidání hesla. Tato metoda je velmi bezpečná a také vám dává větší kontrolu nad tím, kdo k ní může přistupovat.
Chcete-li to provést, nainstalujte apache2-utils
balíček na Debianu, Ubuntu a derivátech; a httpd-tools
na RHEL, Rocky Linux a deriváty.
Poté vytvořte soubor, ve kterém bude umístěno heslo, následovaný uživatelem. Například:
sudo htpasswd -c /home/username/.htpasswd user
Když jej spustíte, budete vyzváni k zadání nového hesla pro uživatele.
Upravujeme konfigurační soubor Nginx nebo ServerBlocks
sudo nano /etc/nginx/sites-enabled/domain.conf
A přidejte něco takového
location /data {
auth_basic "Restricted";
auth_basic_user_file /home/username/.htpasswd;
}
Uložte změny, zavřete editor a restartujte Nginx.
sudo systemctl restart nginx
Nyní, když budete chtít přistupovat ke složce, budete vyzváni k zadání hesla.

Závěr
V tomto krátkém a jednoduchém příspěvku jsme vysvětlili něco tak důležitého, jako je omezení přístupu ke složkám na našem webovém serveru.
Dokumentace Nginx