Jak skonfigurować serwer WWW Nginx na Ubuntu 18.04 Bionic Beaver Linux

Jak skonfigurować serwer WWW Nginx na Ubuntu 18.04 Bionic Beaver Linux

Cel

Dowiedz się, jak instalować i skonfigurować serwer WWW Nginx na Ubuntu 18.04 Bionic Beaver

Wymagania

  • Uprawnienia korzeniowe

Konwencje

  • # - Wymaga podanych poleceń Linuksa, które można wykonać z uprawnieniami root
    bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
  • $ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Inne wersje tego samouczka

Ubuntu 20.04 (Focal Fossa)

Wstęp

Serwer WWW Nginx, wraz z Apache, jest jednym z najbardziej znanych i używanych serwerów sieciowych na świecie. Jest ogólnie mniej wolny od zasobów niż apache i może być również używany jako odwrotny proksja.

W tym samouczku zobaczymy, jak zainstalować i skonfigurować serwer WWW Nginx na Ubuntu 18.04 Bionic Beaver.

Krok 1 - Instalacja

Instalowanie Nginx na Ubuntu 18.04 jest bardzo łatwe, musimy tylko użyć apt-get:

$ sudo apt-get aktualizacja && sudo apt-get instaluj nginx

Pierwsze polecenie synchronizuje nasz komputer z repozytoriami Ubuntu, a drugi faktycznie instaluje pakiet Nginx. Kilka sekund, a serwer zostanie zainstalowany w naszym systemie. Skrypty instalacyjne zajmie się również uruchomieniem usługi Nginx.

Możemy łatwo sprawdzić, czy usługa działa za pomocą następujące polecenie Linux:

$ sudo systemctl is-aktywny nginx

Polecenie powyżej powróci aktywny Jeśli usługa jest w górę: rzeczywiście, jeśli wskazujemy przeglądarkę na adres serwera lub na Lokalny Gospodarz Jeśli działamy z samej maszyny, powinniśmy wizualizować stronę Nginx Welcome:

Strona powitalna Nginx

Krok 2 - Konfiguracja zapory

Aby nasz serwer był w stanie służyć stronom innych maszyn, musimy skonfigurować zaporę, aby umożliwić przychodzący ruch przez port 80 (domyślnie) i port 443 Jeśli chcemy użyć https protokół. Dokładne polecenie, aby uruchomić, aby to osiągnąć, zależy od menedżera zapory w użyciu na maszynie, ale tutaj założę UFW działa, ponieważ jest to domyślne na Ubuntu.

Po pierwsze, weryfikujemy, że zapora jest aktywna:

Status $ sudo UFW

Jeśli nie, możesz go aktywować, wykonując następujące polecenie Linux:

$ sudo ufw

Jednak zachowaj ostrożność, ponieważ ponieważ system powiadomi Cię, aktywowanie zapory może zniszczyć obecnie istniejące połączenia. Aby umożliwić połączenia przychodzące przez port 80, powinniśmy uruchomić:

$ sudo ufw pozwól 80/tcp

Aby pozwolić na port 443, zamiast tego:

$ sudo ufw zezwala na 443/tcp

Wreszcie, aby wizualizować obecny status zapory, możemy uruchomić:

$ sudo UFW status numerowany: aktywny do działania od------- ---- [1] 443/TCP Zezwalaj na dowolne miejsce [2] 80/TCP Zezwalaj na dowolne miejsce [3] 443/TCP (v6) Pozwól w dowolnym miejscu (v6) [4] 80/tcp (v6) Pozwól w dowolnym miejscu (v6) 

Jak widać, powyższe polecenie poda przegląd skonfigurowanych reguł, indeksowany według numeru.

Bloki serwera Nginx (hosty wirtualne)

Bloki serwera Nginx, są odpowiednikiem VirtualHosts Apache i służą do uruchamiania więcej niż jednej witryny na tym samym komputerze serwerowym. Na standardowej instalacji Nginx możemy znaleźć domyślnie blok serwera Jest /etc/nginx/witryny-dostępny/domyślny. Rzućmy na to okiem:

# Domyślna konfiguracja serwera # serwer posłuchaj 80 default_server; Posłuchaj [::]: 80 default_server; [… .] root/var/www/html; # Dodaj indeks.PHP do listy, jeśli używasz indeksu indeksu PHP.Indeks HTML.Indeks HTM.Nginx-debian.html; Nazwa serwera _; lokalizacja /  # Pierwsza próba podania żądania jako plik, a następnie # jako katalog, a następnie wróć do wyświetlania 404. try_files $ uri $ uri/ = 404;  [… .] 
Kopiuj

Powyższa to usprawniona wersja (właśnie usunęłem komentarze) domyślnego bloku serwera Nginx na Ubuntu 18.04. Jak widać, każda dyrektywa kończy się półkolisem. Pierwsza rzecz, którą widzimy w środku serwer Sekcja, na liniach 4-5, to Słuchać dyrektywy. Pierwszy jest dla IPv4 podczas gdy drugi IPv6. W rzeczywistości można to skrócić jako Posłuchaj [::]: 80 ipv6only = off.

default_server Dyrektywa ustawia ten blok serwera jako domyślny, co oznacza, że ​​zostanie ono używane, jeśli żadne inne konfiguracje nie pasują do żądanej nazwy. Dyrektywa może być używana tylko na jednym bloku serwera na raz.

źródło Dyrektywa ON Line 8 ustawia ścieżkę do katalogu głównego dla strony, która będzie obsługiwana przez blok: jest to w zasadzie odpowiednik Apache DocumentRoot.

indeks Dyrektywa w linii 11 określa pliki, które można użyć jako indeks. Pliki zostaną zaznaczone w kolejności.

Online 13, Nazwa serwera Dyrektywa służy do zdefiniowania nazwy serwera do przypisania do konfiguracji i określa blok serwera, który obsługuje żądanie. Podczas definiowania nazwy serwera możliwe jest użycie wieloznacznych i wyrażeń regularnych. W takim przypadku podana wartość to _: Jest to używane, ponieważ jest nieprawidłową wartością i nigdy nie pasuje do żadnej prawdziwej nazwy hosta (pamiętaj, że ta konfiguracja jest catch-all).

Wreszcie mamy Lokalizacja Dyrektywa online 15: Zmienia sposób obsługi żądania w bloku serwera. W takim przypadku ścieżka, którą należy dopasować do instrukcji, jest to /. Część URI, którą należy dopasować.

W lokalizacji „Stanza” w linii 18 możemy zaobserwować inną dyrektywę, try_files: Sprawdza istnienie plików w określonej kolejności, korzystając z pierwszego znalezionego w celu spełnienia żądania. W takim przypadku, jak sugerowano z komentarza w sekcji, najpierw próbuje dopasować plik, niż katalog. Jeśli nic nie spełnia żądania, użytkownik zostanie wyświetlony na 404. Zauważ, że żądanie jest reprezentowane jako $ URI Zmienna, a to, co definiuje to jako katalog, jest cięcie końcowe.



Definiowanie niestandardowego bloku serwera

Powinniśmy teraz utworzyć niestandardowy blok serwera, aby obsłużyć witrynę HTML. Jako pierwszą rzecz utworzymy katalog, który będzie służył jako root dokumentu dla bloku, nazwijmy to przykładem:

$ sudo mkdir/var/www/przykład

Musimy również utworzyć indeks.Strona HTML, którą należy wyświetlić, gdy dotrzemy do witryny:

$ echo "Witaj na przykład!"| sudo tee/var/www/example/index.html> /dev /null

Po zakończeniu możemy utworzyć blok serwerowy w /etc/nginx/witryny-dostępne Katalog, dla spójności, nazwiemy go „przykład”:

serwer Słuchaj 80; root/var/www/przykład; indeks indeksu.html; Server_name www.przykład.Lan;  
Kopiuj

Aby przetestować, że nasza konfiguracja jest poprawna i nie zawiera żadnego błędu składni, możemy uruchomić następujące polecenie Linux:

$ sudo nginx -t

Teraz, ponieważ nie mamy serwera DNS, aby wysłać żądanie naszego serwera o określonej nazwie, musimy dodać wpis w /etc/hosts plik komputera klienta. W takim przypadku adres maszyny używam jako serwer (w wirtualnym środowisku hosta) jest 192.168.122.89, W związku z tym:

# Plik klienta /etc /hosts [… .] 192.168.122.89 www.przykład.Lan 
Kopiuj

Zanim aktywujemy nasz nowy blok serwera, mamy szansę sprawdzić, czy konfiguracja domyślna rzeczywiście działa jako domyślny passel. Jeśli teraz przejdziemy do „www.przykład.LAN ”z komputera klienckiego, w którym właśnie dodaliśmy wpis hostów, widzimy, że serwer odpowie na nasze żądanie za pomocą domyślnej strony Nginx (ponieważ nowy blok nie jest jeszcze aktywowany).

Aby aktywować nasz blok serwera, musimy utworzyć symbolizję z konfiguracji, w której napisaliśmy /etc/nginx/witryny-dostępne Do /etc/nginx/witryny z obsługą:

$ sudo ln -s/etc/nginx/witryny-dostępny/przykład/etc/nginx/witryny

Następnie musimy ponownie uruchomić Nginx:

$ sudo systemctl restart nginx

W tym momencie, jeśli przejdziemy do „www.przykład.Lan ”, powinniśmy zobaczyć naszą niezbyt skomplikowaną stronę:

Przykładowa strona domyślna

Za pomocą SSL

Aby korzystać z SSL, w zasadzie mamy dwie opcje: uzyskanie certyfikatu od organu certyfikatu lub skorzystanie z certyfikatu podpisanego. W naszym pierwszym przykładzie samodzielnie wygenerujemy certyfikat. Uruchom następujące polecenie Linux, aby kontynuować:

$ sudo openssl req -x509 \ -Days 365 \ -sha256 \ -Newkey RSA: 2048 \ -nodes \ -keyout/etc/ssl/private/przykład.klucz \ -out/etc/ssl/certs/przykład -CERT.pem 
Kopiuj

Dzięki temu poleceniu wygenerowaliśmy samozadowolony certyfikat ważny przez 365 dni i klucz 2048 bitów RSA. Certyfikat i klucz zostaną zapisane w /etc/ssl/certs/przykład-cert.pem I /etc/ssl/private/przykład.klucz odpowiednio pliki. Po prostu odpowiedz na pytania, które zostaną zadane, zwracając szczególną uwagę podczas wchodzenia Fqdn: musi pasować do domeny, która użyje certyfikatu, aby działała poprawnie.

Zaraz zostaniesz poproszony o wprowadzenie informacji, które zostaną włączone do Twojego żądania certyfikatu. To, co zamierzasz wejść, to tak zwana nazwa wyróżniająca lub DN. Istnieje sporo pól, ale możesz zostawić puste pola na niektórych polach, jeśli wejdziesz, będzie wartość domyślna.', pole pozostanie puste. ----- Nazwa kraju (2-literowa kod) [AU]: IT State lub Province Nazwa (pełna nazwa) [Some State]: Nazwa lokalizacji (np. Miasto) []: Nazwa organizacji Milan (np. Firma) [Internet Widgits Pty Ltd] : Obrażenia inc. Nazwa jednostki organizacyjnej (np. Sekcja) []: nazwa zwyczajowa (e.G. serwer fqdn lub twoje imię) []: www.przykład.adres e -mail LAN []: 

Teraz, gdy mamy nasz certyfikat i klucz, musimy zmodyfikować konfigurację bloku serwera, aby stała się:

serwer Słuchaj 443 SSL; Server_name www.przykład.Lan; SSL_Certificate/Etc/SSL/certs/przykład-cert.pem; SSL_Certificate_Key/etc/ssl/private/przykład.klucz; root/var/www/przykład; indeks indeksu.html;  
Kopiuj

Jak widać, zmodyfikowaliśmy Słuchać dyrektywa w wierszu 2, za pomocą portu 443 a także włączenie SSL Parametr, następnie dodaliśmy dwie nowe dyrektywy, w wierszach 4-5: SSL_Certificate I ssl_certificate_key, Które wskazują odpowiednio do certyfikatu i lokalizacji certyfikatu.

Po ponownym uruchomieniu usługi Nginx, jeśli teraz przejdziemy do https: // www.przykład.Lan Powinniśmy zobaczyć ostrzeżenie wydane przez przeglądarkę, ze względu na fakt, że certyfikat jest podpisany. Niemniej jednak nasze konfiguracje działają i używamy zaszyfrowanego połączenia:

Nieprawidłowe ostrzeżenie o certyfikatach

Używając Let's Encrypt

Alternatywą dla certyfikatów z podpisem samodzielnym są certyfikaty wydane przez zweryfikowaną stronę trzecią. Chociaż możemy kupić certyfikat od organu certyfikatu, mamy również możliwość użycia „zaszypujmy!".

„Let's Encrypt” jest samym bezpłatnym i otwartym organem certyfikacyjnym, który pozwala nam automatycznie uzyskać certyfikat zaufany przez przeglądarkę za pomocą KULMINACJA protokół i agent zarządzania certyfikatami, który działa na serwerze. Jedynym warunkiem jest wykazać, że mamy kontrolę nad domeną, do której chcemy użyć certyfikatu.

Aby skorzystać z usługi, pierwszą rzeczą do zrobienia jest zainstalowanie Certbot Klient ACME i wtyczka specyficzna dla Nginx:

$ sudo apt-get aktualizacja && apt-get instaluj certbot python-certbot-nginx

Uzyskanie certyfikatu jest dość proste:

$ sudo certbot --Nginx -m -d 

Oczywiście, aby to działało, domena musi prawidłowo wskazywać na nasz publicznie dostępny serwer IP. Certbot poprosi nas o odpowiedź na niektóre pytania w celu dostosowania konfiguracji witryny, a jeśli wszystko pójdzie dobrze, certyfikat i klucz zostaną zapisane w /etc/limsecrrypt/na żywo/ informator. CERTBOT zastosuje również potrzebne zmiany w bloku serwera i ponownie załaduje usługę.

Wnioski

Zainstalowaliśmy serwer WWW Nginx na Ubuntu 18.04, zobaczyłem, jak otworzyć potrzebne porty zapory, zbadał domyślny blok serwera Ubuntu i utworzył niestandardową konfigurację. Na koniec wygenerowaliśmy samowystarczalny certyfikat i zaimplementowaliśmy potrzebne modyfikacje bloku serwerowego, aby użyć protokołu HTTPS.

Jako alternatywę rozważaliśmy wdrożenie „zaszyfrujmy!”, Który może zapewnić nam uznany certyfikat bez żadnych kosztów. Nie wahaj się zadawać żadnych pytań i odwiedź oficjalną dokumentację Nginx, aby uzyskać bardziej szczegółowe informacje.

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Ubuntu 20.04 sztuczki i rzeczy, których możesz nie wiedzieć
  • Ubuntu 20.04 Przewodnik
  • Ubuntu 20.04 Hadoop
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • 8 najlepszych środowisk stacjonarnych Ubuntu (20.04 FOSSA…
  • Lista klientów FTP i instalacja na Ubuntu 20.04 Linux…
  • Ubuntu 20.04: WordPress z instalacją Nginx
  • Jak migrować Apache do Nginx, przekształcając wirtualne hosty na…