Jak chránit heslem webové adresáře v Nginx
Manažeři webových projektů často potřebují chránit svou práci tak či onak. Lidé se často ptají, jak chránit svůj web heslem, když je stále ve vývoji.
V tomto tutoriálu vám ukážeme jednoduchou, ale účinnou techniku, jak webový adresář chráněný heslem při spuštění Nginxu jako webového serveru.
V případě, že používáte webový server Apache, můžete se podívat na naši příručku pro ochranu webového adresáře heslem:
- Heslo chránit webové adresáře v Apache
Požadavky
K dokončení kroků v tomto tutoriálu budete potřebovat:
- Nainstalovaný webový server Nginx
- Kořenový přístup k serveru
Krok 1: Vytvořte uživatele a heslo
1. Abychom chránili náš webový adresář heslem, budeme muset vytvořit soubor, který bude obsahovat naše zašifrované uživatelské jméno a heslo.
Při používání Apache můžete použít nástroj „htpasswd“. Pokud máte tento nástroj nainstalovaný ve svém systému, můžete pomocí tohoto příkazu vygenerovat soubor s hesly:
htpasswd -c /path/to/file/.htpasswd username
Při spuštění tohoto příkazu budete požádáni o nastavení hesla pro výše uvedeného uživatele a poté bude v zadaném adresáři vytvořen soubor .htpasswd.
2. Pokud tento nástroj nemáte nainstalovaný, můžete soubor .htpasswd vytvořit ručně. Soubor by měl mít následující syntaxi:
username:encrypted-password:comment
Uživatelské jméno, které budete používat, závisí na vás, vyberte si, co chcete.
Důležitější je způsob, jakým pro daného uživatele vygenerujete heslo.
Krok 2: Vygenerujte zašifrované heslo
3. Chcete-li vygenerovat heslo, použijte integrovanou funkci „crypt“ v Perlu.
Zde je příklad tohoto příkazu:
perl -le 'print crypt("your-password", "salt-hash")'
Příklad ze skutečného života:
perl -le 'print crypt("#12Dfsaa$fa", "1xzcq")'
Nyní otevřete soubor a vložte své uživatelské jméno a vygenerovaný řetězec, oddělený středníkem.
Zde je postup:
vi /home/tecmint/.htpasswd
Zadejte své uživatelské jméno a heslo. V mém případě to vypadá takto:
tecmint:1xV2Rdw7Q6MK.
Uložte soubor stisknutím klávesy Esc a následně klávesy :wq.
Krok 3: Aktualizujte konfiguraci Nginx
4. Nyní otevřete a upravte konfigurační soubor Nginx přidružený k webu, na kterém pracujete. V našem případě použijeme výchozí soubor na adrese:
vi /etc/nginx/conf.d/default.conf [For CentOS based systems]
OR
vi /etc/nginx/nginx.conf [For CentOS based systems]
vi /etc/nginx/sites-enabled/default [For Debian based systems]
V našem příkladu budeme heslem chránit kořen adresáře pro nginx, což je: /usr/share/nginx/html
.
5. Nyní přidejte následující dva řádky pod cestu, kterou chcete chránit.
auth_basic "Administrator Login";
auth_basic_user_file /home/tecmint/.htpasswd;
Nyní uložte soubor a restartujte Nginx pomocí:
systemctl restart nginx
OR
service nginx restart
6. Nyní zkopírujte/vložte tuto IP adresu do svého prohlížeče a měli byste být požádáni o heslo:
A je to! Váš hlavní webový adresář je nyní chráněn. Chcete-li odstranit ochranu heslem na webu, jednoduše odstraňte dva řádky, které jste právě přidali do souboru .htpasswd, nebo použijte následující příkaz k odebrání přidaného uživatele ze souboru hesel.
htpasswd -D /path/to/file/.htpasswd username