Instalacja Nginx

Instalacja Nginx i inne konfiguracje

Już wiesz czym jest Nginx – pisaliśmy o tym w poprzednim artykule z tego cyklu. Teraz czas na kolejne etapy! Zobacz jak wygląda instalacja Nginx oraz jak przeprowadzić inne konfiguracje.

 

Sprawdź, czego nauczysz się dzięki kursowi Grafany!

Udostępniamy darmowo ponad godzinny materiał z kursu. Przekonaj się, że jest idealny dla Ciebie!

Chcesz wziąć udział w kursie? Kliknij w link i obejrzyj co Cię czeka: https://asdevops.pl/demo-grafana/

 

 

 

 

Instalacja Nginx

Aby zainstalować Nginx postępuj zgodnie z poniższymi krokami. Przyjmujemy, że posiadasz dostęp do terminala i prawa administratora (root) na serwerze. Niektóre polecenia mogą się różnić w zależności od dystrybucji. Instalacja Nginx wygląda następująco:

  1. Zaktualizuj listę dostępnych pakietów:

Uruchom terminal i wykonaj następującą komendę, aby zaktualizować listę dostępnych pakietów:

sudo dnf update
  1. Następnie, zainstaluj serwer Nginx, używając polecenia dnf:
sudo dnf install nginx
  1. Instalacja Nginx zakończona? To możesz uruchomić usługę, aby rozpocząć jej działanie:
sudo systemctl start nginx
  1. Możesz sprawdzić, czy Nginx został poprawnie uruchomiony i działa, używając polecenia:
sudo systemctl status nginx
Instalacja Nginx

Jeśli usługa działa poprawnie, zobaczysz komunikat o jej statusie, wskazujący, że jest aktywna (active).

  1. Jeśli chcesz, aby Nginx uruchamiał się automatycznie przy starcie systemu, wykonaj polecenie:
sudo systemctl enable nginx
  1. Sprawdźmy jeszcze usługi nasłuchujące na portach za pomocą netstat.  Netstat służy do wyświetlania informacji o połączeniach sieciowych, portach sieciowych i protokołach sieciowych. Przydatne narzędzie do monitorowania i diagnostyki.
netstat -plnt


Wyjaśnienia

p – wyświetla tylko połączenia dla wybranego protokołu (np. TCP, UDP, ICMP).
l – wyświetla status Listen czyli nasłuchiwanie

n – wyświetla adresy i numery portów w postaci liczbowej.
t –  wyświetla tylko połączenia TCP.
u – (opcjonalnie) – wyświetla tylko połączenia UDP.

Jak widać na poniższym screenie, mamy usługę nginx słuchającą na porcie 80.

Wpisując do przeglądarki adres IP naszego serwera, powinniśmy otrzymać stronę startową ngnix. Mój serwer ma przypisany adres IP v4, dlatego strona startowa jest już dostępna z każdego miejsca na świecie, nie tylko lokalnie.

Pierwsze kroki za nami. Instalacja Nginx już przeprowadzona i serwer działa! Fajnie, aby usługi działały na konkretnej domenie, a nie za pomocą ciągu trudnych cyfr do zapamiętania. W kolejnym kroku podłączymy domenę pod nasz VPS.

Kupujemy domenę naszą domenę

Aby korzystać z przyjaznego adresu URL należy zakupić swoją własną domenę internetową.

Ja wybrałem OVH, ale jest sporo innych serwisów. Koszty domeny w pierwszym roku to ~12zł. Na potrzeby tego artykułu zakupiłem domenę kierunek-linux.pl.

Własna domena daje sporo możliwości:

  • własny adres internetowy np: kierunek-linux.pl
  • podłączenie adresu e-mail z własną domeną np.: kontakt@mojadomena.pl
  • obsługa subdomen, czyli uruchomienie różnych aplikacji pod subdomenami np: apk1.kierunek-linux.pl , apk2.kierunek-linux.pl
  • otrzymujemy strefę DNS, gdzie możemy konfigurować różne wpisy, np autoryzację wpisów google (search console), czy zabezpieczenia SPF, DKIM, DMARC.

Podłączamy domenę do naszego serwera

W przypadku OVH obsługę strefy DNS mamy w panelu domeny. Proces zmiany wpisów DNS jest podobny u każdego usługodawcy. W razie problemów zapytaj support.

  1. zaloguj się na swoje konto, gdzie kupiłeś domenę.
  2. Wybierz swoją domenę: Po zalogowaniu się, kliknij na zakładkę „Domeny” lub „Moje Domeny” i wybierz domenę, której rekord DNS A chcesz zmienić.
  3. W sekcji DNS znajdź rekord typu A, który chcesz zmienić.
  4. Kliknij na ikonę edycji: Obok rekordu A, znajdź ikonę edycji.
  5. Wprowadź nowy adres IP: Po kliknięciu na ikonę edycji, pojawi się okno, w którym będziesz mógł zmienić wartość rekordu. Wprowadź nowy adres IP, który chcesz przypisać do swojej domeny. Opcjonalnie można ustawić też czas TTL na 60sek. Wtedy nasze ustawienia zaczną działać teoretycznie szybciej.

Uwaga: Po dokonaniu zmian rekordu DNS, zmiany te mogą się rozprzestrzenić w sieci w ciągu kilku minut do kilku godzin, w zależności od konfiguracji DNS.

Inny scenariusz czyli kierujemy ruch na cloudflare. Bardziej doświadczeni użytkownicy mogą skorzystać z usługi cloudflare i przekierować domenę właśnie na tę usługę. Ten sposób opiszemy w dalszej części artykułu. Natomiast teraz kilka słów o Cloudflare.

Co nam daje korzystanie z Cloudflare:

  • Wzrost wydajności i szybkości strony: Cloudflare działa jako tzw. CDN (Content Delivery Network)
  • Cloudflare oferuje zaawansowaną ochronę przed atakami typu DDoS (Distributed Denial of Service). System analizuje ruch na Twojej stronie i blokuje niebezpieczne lub złośliwe żądania, które mogą zagrażać dostępności Twojej witryny.
  • Oszczędność transferu danych: Dzięki wykorzystaniu CDN, Cloudflare zmniejsza ilość przesyłanych danych z Twojego serwera głównego.
  • Cloudflare oferuje darmowy certyfikat SSL, co pozwala na szyfrowanie komunikacji między użytkownikiem a Twoją witryną, co jest szczególnie istotne w kontekście bezpieczeństwa i korzystania z protokołu HTTPS.
Instalacja Nginx

W moim przypadku po 5 minutach adres domeny zaczął kierować na serwer VPS. Efektem tego jest statyczna stroną powitalna pod domeną kierunek-linux.pl.

To samo co uzyskaliśmy zaraz po instalacji serwer, tym razem z naszą własną domeną!

Konfiguracja serwera Nginix

Po instalacji serwera nadszedł czas na jego konfigurację. Pomimo tego, że serwer już działa, sporo jeszcze pracy przed nami. Dlatego warto dowiedzieć się co się dzieje pod spodem, jak wyglądają pliki konfiguracyjnie i jakie mamy możliwości.

Główny plik konfiguracyjny Nginx to nginx.conf. Możesz również tworzyć oddzielne pliki konfiguracyjne dla każdej strony lub aplikacji, które będą wczytywane z folderu sites-available.

  1. Jeżeli nie ma katalogu sites-available, utwórz taki folder:
sudo mkdir /etc/nginx/sites-available
  1. Edytuj główny plik konfiguracyjny:
sudo nano /etc/nginx/nginx.conf
  1. W pliku nginx.conf dodaj linię, która będzie wczytywać pliki konfiguracyjne z folderu sites-available:
    include /etc/nginx/sites-available/*;

Ja wrzuciłem to poniżej poprzedniego includea (zaznaczone na żółto)

  1. Tworzenie konfiguracji dla swojej strony lub aplikacji. Przejdź do folderu sites-available:
cd /etc/nginx/sites-available
  1. Utwórz plik konfiguracyjny dla twojej strony lub aplikacji, np. moja-strona:
sudo nano moja-strona1

W pliku moja-strona dodaj podstawową konfigurację. Poniżej znajduje się prosty przykład dla strony statycznej:

server {
    listen 80;
    listen [::]: 80;
    server_name twoja_domena.pl www.twoja_domena.pl;

    root /ścieżka/do/katalogu/twojej/strony;

    location / {
        try_files $uri $uri/ =404;
    }
}

Zamień twoja_domena.pl na rzeczywisty adres twojej strony i ścieżka/do/katalogu/twojej/strony na ścieżkę do katalogu, gdzie znajdują się pliki twojej strony.

Moja konfiguracja:

server {
    listen 80;
    listen [::]:80;
    server_name kierunek-linux.pl www.kierunek-linux.pl;

    root /usr/share/nginx/moja-strona1;


    location / {
        try_files $uri $uri/ =404;
    }
}

Pamiętaj o utworzeniu katalogu gdzie będą przechowywane pliki Twojej nowej strony.

/usr/share/nginx/moja-strona1;
  1. Aktywacja konfiguracji

Aby aktywować konfigurację, musisz utworzyć link symboliczny do pliku konfiguracyjnego w folderze sites-enabled (utwórz katalog, jeżeli go nie ma):

sudo ln -s /etc/nginx/sites-available/moja-strona1 /etc/nginx/sites-enabled/
  1. Testowanie konfiguracji i restart Nginx. Sprawdź, czy konfiguracja jest poprawna za pomocą kpolecenia:
sudo nginx -t
Instalacja Nginx

Jeśli nie ma żadnych błędów, przeładuj konfigurację Nginx, aby załadować nowe ustawienia. To polecenie nie zabije procesów:

sudo nginx -s reload

Jeżeli chcesz zrestartować całego Nginxa użyj:

sudo systemctl restart nginx

Po restarcie wpisujemy adres URL do przeglądarki. W efekcie dostajemy 403 Forbidden. To znaczy, że nasza konfiguracja się działa ale, w naszym katalogu nie ma plików. Utwórzmy prosty plik index.html

Przechodzimy do katalogu z naszą stroną /usr/share/nginx/moja-strona1 a następnie Tworzymy plik index.html

sudo nano index.html

Wrzućmy tam prosty szablon html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>HTML 5 Boilerplate</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
        <h1>Nginx - it's Works!<h1>
  </body>
</html>

Odświeżamy stronę w przeglądarce. Tym razem zadziałało! Nie trzeba przeładowywać konfiguracji.

Dodajmy obsługę SSL

Aby dodać obsługę SSL, skorzystamy z prostego narzędzia jakim jest certbot https://certbot.eff.org/ . Nie musimy kupować żadnych certyfikatów SSL.

Zanim zainstalujemy cerbota musimy wrzucić sobie dodatkowe pakiety

sudo dnf install epel-release

Następnie instalujemy certbota wraz z narzędziem które zajmie się konfiguracją SSL dla domen

sudo dnf install certbot python3-certbot-nginx

Sprawdzamy poprawność instalacji, jeżeli jest ok, otrzymamy numer wersji certbota

certbot --version
Instalacja Nginx

Uruchamiamy instalację certyfikatu dla naszej domeny:

certbot --nginx -d kierunek-linux.pl

Zostaniemy poproszeni o podanie adresu email oraz wyrażenie zgody.

Po chwili nasza domena jest skonfigurowana. W sekcji Deploying certificate mamy informację o zmodyfikowanym pliku strony moja-strona1

Jeżeli wszystko jest ok przeładuj konfigurację Nginx, aby załadować nowe ustawienia.

sudo nginx -s reload

Po zerknięciu na konfigurację pliku domeny widać zmiany wrzucone przez certbota

Odpalamy naszą stronę w przeglądarce i możemy cieszyć się nowym certyfikatem.

Instalacja Nginx

Dodanie subdomeny

Subdomena to część adresu internetowego znajdująca się przed główną domeną. W nazwie domeny, która składa się z kilku poziomów, subdomena jest jednym z tych poziomów. Składnia subdomeny jest następująca: subdomena.domena.glówna

Subdomeny są często używane do organizacji struktury witryny internetowej lub do oddzielenia różnych usług lub sekcji witryny. Dzięki subdomenom możemy w łatwy sposób tworzyć różne sekcje witryny i przypisywać do nich oddzielne zasoby lub aplikacje.

Konfiguracja subdomen odbywa się często na poziomie serwera DNS i serwera WWW (np. Nginx lub Apache), aby przekierować żądania do odpowiednich zasobów lub aplikacji na serwerze. W moim przypadku subdomenę utworzymy w panelu konta OVH.

Przykłady zastosowań subdomen:

blog.example.com – subdomena służąca do hostowania bloga.

shop.example.com – subdomena służąca do hostowania sklepu internetowego.

mail.example.com – subdomena dla usługi poczty elektronicznej.

support.example.com – subdomena przeznaczona dla sekcji pomocy technicznej.

Konfiguracja subdomeny

  1. Wracamy do panelu domeny
  2. W naszej domenie dodajemy rekord A, tak jak w przypadku zwykłej domeny
  3. Tym razem przed nazwą domeny wpisujemy jej subdomenę np.: apk1
  4. Ustawiamy adres naszego serwera VPS (jest możliwość ustawienia innego serwera, niż domena główna)
  5. Zapisujemy ustawienia i czekamy na propagację.
  6. Nasz adres nowej subdomeny to apk1.kierunek-linux.pl

Na tej domenie postawimy sobię aplikację w pythonie, np:. django.
W kolejnej subdomenie ustawimy obsługę PHP, aby uruchomić bloga firmowego np.: wordpressa. Należy zauważyć, że są to dwie różne technologie.

Konfiguracja subdomeny w Nginx jest podobna do konfiguracji głównej domeny. W tym przykładzie założymy, że masz już skonfigurowaną główną domenę i Nginx działa poprawnie.

Zakładamy, że chcemy skonfigurować subdomenę sub.twoja_domena.pl. W moim przypadku będzie to apk1.kierunek-linux.pl

  1. Przejdź do folderu sites-available:
cd /etc/nginx/sites-available
  1. Utwórz plik konfiguracyjny dla subdomeny, np. sub.twoja_domena.pl:
sudo nano sub.twoja_domena.pl
  1. Dodaj podstawową konfigurację dla subdomeny w pliku sub.twoja_domena.pl. Poniżej moja konfiguracja:
server {
    listen 80;
    listen [::]:80;
    server_name apk1.kierunek-linux.pl www.apk1.kierunek-linux.pl;

    root /usr/share/nginx/apk1;

    location / {
        try_files $uri $uri/ =404;
    }
}
  1. Tworzymy katalog z naszą nową subdomeną (np akp1), przechodzimy do utworzonego katalogu  /usr/share/nginx/apk1 a następnie tworzymy plik index.html

Wrzućmy trochę inną zawartość pliku index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>HTML 5 Boilerplate</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
        <h1>APK1 - Nginx - it's Works!<h1>
  </body>
</html>
  1.  Aktywacja konfiguracji subdomeny – Aby aktywować konfigurację subdomeny, utwórz link symboliczny do pliku konfiguracyjnego w folderze sites-enabled:
sudo ln -s /etc/nginx/sites-available/sub.twoja_domena.pl /etc/nginx/sites-enabled/

U mnie polecenie wygląda tak:

sudo ln -s /etc/nginx/sites-available/apk1.kierunek-linux.pl /etc/nginx/sites-enabled/

Na koniec sprawdź konfigurację i przeładuj Nginixa.

sudo nginx -t
sudo nginx -s reload

Działa!

  1. Wrzućmy szybko certyfikat SSL za pomocą certbota
certbot --nginx -d apk1.kierunek-linux.pl

Certyfikat podłączony. Mamy przygotowane środowisko do instalacji różnych aplikacji.

Instalacja Nginx

Podsumowanie – Instalacja Nginx i inne konfiguracje

Mamy nadzieję, że z naszym poradnikiem instalacja Nginx oraz inne konfiguracje przeszły u Ciebie bez większych komplikacji! Jeśli pojawiłyby się jakieś pytania, to śmiało pisz!

Chcesz wiedzieć więcej na temat bezpieczeństwa? Przeczytaj nasze inne artykuły, a także weź udział w naszych kursach!

 

 

 

Sprawdź, czego nauczysz się dzięki kursowi Grafany!

Udostępniamy darmowo ponad godzinny materiał z kursu. Przekonaj się, że jest idealny dla Ciebie!

Chcesz wziąć udział w kursie? Kliknij w link i obejrzyj co Cię czeka: https://asdevops.pl/demo-grafana/

 
 
 

Lekcja demo kursu Grafany!

X