Polski

Instalacja Nginx z certyfikatem SSL (Certbot)

3 min
Hosting VPS/VDS

Ten przewodnik pokazuje, jak zainstalować Nginx, skonfigurować stronę i uzyskać darmowy certyfikat SSL z Certbot, aby zabezpieczyć witrynę przez HTTPS.

📋 Wymagania wstępne

  • Serwer VPS z dostępem root lub sudo
  • Domena wskazująca na IP serwera (np. mysite.com)
  • Porty 80 (HTTP) i 443 (HTTPS) otwarte w zaporze

Uwaga: Jeśli nie masz jeszcze domeny, możesz testować po IP, ale Certbot wymaga domeny do wystawienia certyfikatów SSL.

💡 Rekomendacja infrastruktury

Nginx i Certbot świetnie działają na naszych VPS NVMe, które zapewniają wyjątkową wydajność dysku przy serwowaniu stron. Dyski NVMe skracają czas odpowiedzi dla odwiedzających.

🚀 Krok 1: Instalacja Nginx

Aktualizacja pakietów

Bash
sudo apt update

Instalacja Nginx

Bash
sudo apt install nginx -y

Weryfikacja instalacji

Bash
# Sprawdź, czy Nginx jest zainstalowany nginx -v # Sprawdź, czy Nginx działa sudo systemctl status nginx

Jeśli wszystko jest w porządku, powinieneś zobaczyć active (running).

Zezwolenie na Nginx w zaporze (UFW)

Bash
# Zezwól na HTTP (port 80) sudo ufw allow 'Nginx HTTP' # Zezwól na HTTPS (port 443) sudo ufw allow 'Nginx HTTPS' # Sprawdź reguły sudo ufw status

Test Nginx

Otwórz przeglądarkę i wejdź na:

  • http://adres-ip-serwera lub
  • http://twoja-domena.com

Powinieneś zobaczyć domyślną stronę Nginx potwierdzającą działanie instalacji.

📝 Krok 2: Konfiguracja strony

Utworzenie katalogu dla witryny

Bash
# Utwórz katalog (zamień mysite.com na swoją domenę) sudo mkdir -p /var/www/mysite.com # Ustaw uprawnienia sudo chown -R $USER:$USER /var/www/mysite.com sudo chmod -R 755 /var/www/mysite.com

Prosta strona HTML

Bash
# Utwórz stronę index nano /var/www/mysite.com/index.html

Wklej tę prostą treść:

HTML
1<!DOCTYPE html> 2<html lang="pl"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Moja strona</title> 7</head> 8<body> 9 <h1>Witaj na mojej stronie!</h1> 10 <p>Twoja strona działa poprawnie z Nginx.</p> 11</body> 12</html>

Zapisz: Ctrl + X, potem Y, potem Enter.

Konfiguracja Nginx

Bash
# Utwórz plik konfiguracyjny sudo nano /etc/nginx/sites-available/mysite.com

Dodaj tę konfigurację:

Nginx
1server { 2 listen 80; 3 listen [::]:80; 4 5 server_name mysite.com www.mysite.com; 6 7 root /var/www/mysite.com; 8 index index.html; 9 10 location / { 11 try_files $uri $uri/ =404; 12 } 13}

Ważne: Zamień mysite.com na swoją rzeczywistą domenę we wszystkich miejscach.

Zapisz plik.

Włączenie witryny

Bash
# Utwórz dow symboliczny, aby włączyć witrynę sudo ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/ # Test konfiguracji Nginx sudo nginx -t

Jeśli widzisz syntax is ok i test is successful, możesz kontynuować.

Usunięcie domyślnej witryny (opcjonalnie)

Bash
# Usuń domyślną witrynę sudo rm /etc/nginx/sites-enabled/default # Przeładuj Nginx sudo systemctl reload nginx

Test strony

Otwórz przeglądarkę i wejdź na http://twoja-domena.com. Powinieneś zobaczyć swoją stronę HTML.

🔒 Krok 3: Instalacja Certbot i uzyskanie certyfikatu SSL

Certbot automatycznie uzyskuje darmowe certyfikaty SSL od Let's Encrypt.

Instalacja Certbot

Bash
# Certbot i wtyczka Nginx sudo apt install certbot python3-certbot-nginx -y

Uzyskanie certyfikatu SSL

Bash
# Certyfikat dla domeny sudo certbot --nginx -d mysite.com -d www.mysite.com

Ważne: Zamień mysite.com na swoją rzeczywistą domenę.

Certbot zada kilka pytań:

  1. E-mail: Podaj adres (powiadomienia o odnowieniu)
  2. Regulamin: Zaakceptuj (A — Agree)
  3. Udostępnianie e-maila: Y lub N według preferencji
  4. Przekierowanie HTTP → HTTPS: Wybierz 2 (zalecane automatyczne przekierowanie)

Weryfikacja certyfikatu

Bash
# Sprawdź utworzone certyfikaty sudo certbot certificates

Powinieneś zobaczyć certyfikat z datami ważności.

Test strony HTTPS

Otwórz przeglądarkę i wejdź na https://twoja-domena.com.

Powinieneś zobaczyć:

  • Zieloną kłódkę 🔒 w pasku adresu
  • Stronę ładowaną przez HTTPS

Gratulacje — witryna jest zabezpieczona SSL.

🔄 Krok 4: Automatyczne odnawianie certyfikatu

Certyfikaty Let's Encrypt wygasają po 90 dniach. Certbot może je odnawiać automatycznie.

Test automatycznego odnowienia

Bash
# Symulacja odnowienia sudo certbot renew --dry-run

Jeśli widzisz The dry run was successful, automatyczne odnowienie działa.

Usługa odnowień

Certbot tworzy timer systemd. Sprawdź:

Bash
# Status timera sudo systemctl status certbot.timer # Jeśli timer nieaktywny — włącz sudo systemctl enable certbot.timer sudo systemctl start certbot.timer

Certyfikat zostanie odnowiony przed wygaśnięciem.

📁 Struktura plików

Ważne lokalizacje:

/var/www/mysite.com/          # Pliki witryny
/etc/nginx/                   # Konfiguracja Nginx
/etc/nginx/sites-available/   # Dostępne witryny
/etc/nginx/sites-enabled/     # Aktywne witryny
/etc/letsencrypt/             # Certyfikaty SSL

✅ Końcowa weryfikacja

Nginx

Bash
# Status usługi sudo systemctl status nginx # Test konfiguracji sudo nginx -t

SSL

Bash
# Lista certyfikatów sudo certbot certificates # Data wygaśnięcia sudo certbot certificates | grep "Expiry"

Test witryny

  • Wejdź na https://twoja-domena.com
  • Sprawdź zieloną kłódkę w przeglądarce
  • Kliknij kłódkę, aby zobaczyć szczegóły certyfikatu

🛠️ Przydatne polecenia

Zarządzanie Nginx

Bash
# Start Nginx sudo systemctl start nginx # Stop Nginx sudo systemctl stop nginx # Restart Nginx sudo systemctl restart nginx # Przeładowanie Nginx (bez przerwy) sudo systemctl reload nginx # Test konfiguracji sudo nginx -t

Certyfikaty SSL

Bash
# Ręczne odnowienie wszystkich certyfikatów sudo certbot renew # Odnowienie konkretnego certyfikatu sudo certbot renew --cert-name mysite.com # Lista certyfikatów sudo certbot certificates # Usunięcie certyfikatu sudo certbot delete --cert-name mysite.com

Logi

Bash
# Logi Nginx sudo tail -f /var/log/nginx/error.log sudo tail -f /var/log/nginx/access.log # Logi Certbot sudo tail -f /var/log/letsencrypt/letsencrypt.log

🆘 Rozwiązywanie problemów

Nginx nie startuje

Bash
# Błędy konfiguracji sudo nginx -t # Logi błędów sudo journalctl -u nginx -n 50

Certyfikat SSL się nie instaluje

Problem: Certbot nie może zweryfikować domeny.

Rozwiązania:

  1. Sprawdź, czy domena wskazuje na IP serwera:

    Bash
    dig mysite.com
  2. Sprawdź porty 80 i 443:

    Bash
    sudo ufw status
  3. Sprawdź, czy Nginx nasłuchuje na porcie 80:

    Bash
    sudo netstat -tlnp | grep nginx
  4. Upewnij się, że w konfiguracji Nginx jest poprawny server_name

Strona nie ładuje się przez HTTPS

  1. Sprawdź certyfikat:

    Bash
    sudo certbot certificates
  2. Sprawdź konfigurację Nginx:

    Bash
    sudo nginx -t sudo cat /etc/nginx/sites-enabled/mysite.com
  3. Upewnij się, że zapora zezwala na port 443:

    Bash
    sudo ufw allow 443/tcp

Błąd 502 Bad Gateway

Oznacza to, że Nginx nie może połączyć się z aplikacją.

Bash
# Logi Nginx sudo tail -f /var/log/nginx/error.log # Czy aplikacja działa sudo systemctl status your-application

📚 Dodatkowe zasoby

❓ Najczęstsze pytania

P: Czy muszę płacić za certyfikat SSL?
O: Nie. Certbot korzysta z Let's Encrypt — darmowe certyfikaty.

P: Czy certyfikat wygasa?
O: Tak, po 90 dniach, ale Certbot odnawia go automatycznie.

P: Czy mogę mieć wiele stron na jednym serwerze?
O: Tak. Dla każdej witryny utwórz plik w /etc/nginx/sites-available/.

P: Jak dodać subdomenę?
O: Nowa konfiguracja Nginx i certyfikat: sudo certbot --nginx -d subdomain.mysite.com.

P: Co jeśli zapomniałem odnowić certyfikat?
O: Certbot odnawia go automatycznie. Możesz też uruchomić ręcznie: sudo certbot renew.


Twoja strona jest teraz zabezpieczona przez HTTPS. 🚀🔒

Bądź na bieżąco z najnowszymi ofertami, zniżkami i promocjami specjalnymi.

Zobacz promocje

Używamy plików cookie

Używamy plików cookie analitycznych, aby ulepszać nasz serwis. Nie sprzedajemy danych stronom trzecim. Więcej w polityce prywatności.