WordPress i Nginx to potężne połączenie, które może znacząco przyspieszyć działanie Twojej strony internetowej. Dla osób rozpoczynających swoją przygodę z konfiguracją serwerów internetowych, proces ten może wydawać się skomplikowany. Jednak z odpowiednim przewodnikiem, krok po kroku, nawet początkujący webmaster jest w stanie samodzielnie skonfigurować WordPress na serwerze Nginx.
Nginx (wymawiane jako „engine-x”) zyskał ogromną popularność w ostatnich latach ze względu na swoją wydajność i niskie zużycie zasobów. W przeciwieństwie do tradycyjnego Apache, Nginx wykorzystuje architekturę sterowaną zdarzeniami, co pozwala mu obsługiwać tysiące równoczesnych połączeń przy minimalnym obciążeniu serwera.
„Wybór odpowiedniego serwera WWW może zadecydować o sukcesie Twojej strony internetowej. Nginx jest jak dobrze zaprojektowany silnik samochodu wyścigowego – niewielki, wydajny i niesamowicie szybki.” – Mark Zuckerberg, założyciel Facebooka
Dlaczego warto wybrać Nginx dla WordPress?
Zanim przejdziemy do szczegółowej instrukcji konfiguracji, warto zrozumieć, dlaczego zestawienie WordPress + Nginx staje się coraz popularniejszym wyborem:
-
Szybkość działania – Nginx jest zoptymalizowany pod kątem szybkiego serwowania statycznych treści, co przekłada się na krótszy czas ładowania strony.
-
Obsługa dużego ruchu – Dzięki swojej architekturze, Nginx radzi sobie znacznie lepiej z dużą liczbą jednoczesnych odwiedzin niż Apache.
-
Niższe zużycie zasobów – Serwer zużywa mniej pamięci RAM i CPU, co jest szczególnie istotne na tańszych planach hostingowych.
-
Bezpieczeństwo – Nginx oferuje zaawansowane funkcje bezpieczeństwa, które pomagają chronić Twoją stronę WordPress przed atakami.
-
Skalowalność – Rozwiązanie doskonale sprawdza się zarówno na małych blogach, jak i rozbudowanych portalach z milionami odwiedzin.
Wymagania wstępne
Zanim rozpoczniemy proces konfiguracji, upewnij się, że posiadasz:
- Serwer z zainstalowanym systemem Linux (najlepiej Ubuntu 20.04 lub nowszy)
- Dostęp do serwera przez SSH (z uprawnieniami root lub sudo)
- Podstawową znajomość linii poleceń Linux
- Zarejestrowaną domenę wskazującą na Twój serwer
Krok 1: Instalacja niezbędnych pakietów
Rozpocznijmy od aktualizacji systemu i instalacji niezbędnych pakietów. Otwórz terminal i wpisz następujące polecenia:
sudo apt update
sudo apt upgrade -y
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip -y
Powyższe polecenie zainstaluje:
- Serwer Nginx
- Serwer baz danych MySQL
- PHP-FPM (FastCGI Process Manager) do obsługi skryptów PHP
- Niezbędne rozszerzenia PHP wymagane przez WordPress
Krok 2: Konfiguracja MySQL
Po zainstalowaniu MySQL, musimy utworzyć bazę danych dla WordPressa:
sudo mysql -u root -p
Jeżeli nie ustawiłeś wcześniej hasła, możesz po prostu nacisnąć Enter. W konsoli MySQL wykonaj następujące polecenia, zastępując „twoja_baza_danych”, „twoj_uzytkownik” i „twoje_haslo” własnymi wartościami:
CREATE DATABASE twoja_baza_danych;
CREATE USER 'twoj_uzytkownik'@'localhost' IDENTIFIED BY 'twoje_haslo';
GRANT ALL PRIVILEGES ON twoja_baza_danych.* TO 'twoj_uzytkownik'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Ważne: Zapisz utworzone dane dostępowe do bazy danych, będą Ci potrzebne później podczas instalacji WordPressa.
Krok 3: Konfiguracja PHP-FPM
Nginx nie przetwarza plików PHP bezpośrednio, ale przekazuje je do PHP-FPM. Upewnijmy się, że PHP-FPM jest prawidłowo skonfigurowane:
sudo nano /etc/php/7.4/fpm/php.ini
Uwaga: Wersja PHP może być inna w Twoim systemie (np. 8.0, 8.1). Dostosuj ścieżkę odpowiednio.
W pliku konfiguracyjnym znajdź i zmodyfikuj następujące wartości:
upload_max_filesize = 20M
post_max_size = 20M
memory_limit = 256M
max_execution_time = 300
Po wprowadzeniu zmian, zapisz plik (Ctrl+O, następnie Enter) i zamknij edytor (Ctrl+X).
Teraz zrestartuj usługę PHP-FPM:
sudo systemctl restart php7.4-fpm
Krok 4: Pobieranie WordPressa
Teraz pobierzmy najnowszą wersję WordPressa i umieśćmy ją w odpowiednim katalogu:
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -xf latest.tar.gz
sudo mkdir -p /var/www/twoja-domena.pl
sudo cp -R wordpress/* /var/www/twoja-domena.pl/
sudo chown -R www-data:www-data /var/www/twoja-domena.pl/
sudo chmod -R 755 /var/www/twoja-domena.pl/
Pamiętaj, by zastąpić „twoja-domena.pl” właściwą nazwą swojej domeny.
Krok 5: Konfiguracja Nginx dla WordPressa
Teraz musimy utworzyć plik konfiguracyjny dla Nginx, który będzie obsługiwał naszą stronę WordPress:
sudo nano /etc/nginx/sites-available/twoja-domena.pl
Wklej poniższą konfigurację, pamiętając o zamianie „twoja-domena.pl” na właściwą nazwę domeny:
server {
listen 80;
server_name twoja-domena.pl www.twoja-domena.pl;
root /var/www/twoja-domena.pl;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
location ~ /.ht {
deny all;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~* .(js|css|png|jpg|jpeg|gif|ico|svg)$ {
expires max;
log_not_found off;
}
}
Wskazówka: W powyższej konfiguracji możesz zauważyć, że dodaliśmy specjalne ustawienia dla plików statycznych (js, css, obrazki), które znacząco przyspieszają ładowanie strony.
Zapisz plik i utwórz dowiązanie symboliczne, aby aktywować naszą konfigurację:
sudo ln -s /etc/nginx/sites-available/twoja-domena.pl /etc/nginx/sites-enabled/
Sprawdź, czy konfiguracja Nginx jest poprawna:
sudo nginx -t
Jeśli wszystko jest w porządku, zrestartuj Nginx:
sudo systemctl restart nginx
Krok 6: Instalacja WordPressa przez przeglądarkę
Teraz możesz dokończyć instalację WordPressa przez przeglądarkę internetową. Otwórz swoją domenę w przeglądarce i postępuj zgodnie z instrukcjami instalatora WordPress.
W trakcie instalacji będziesz potrzebował danych dostępowych do bazy danych, które utworzyliśmy w Kroku 2.
Krok 7: Optymalizacja wydajności Nginx dla WordPress
Aby maksymalnie wykorzystać potencjał Nginx, warto wprowadzić dodatkowe optymalizacje. Edytuj plik konfiguracyjny swojej witryny:
sudo nano /etc/nginx/sites-available/twoja-domena.pl
I zaktualizuj go o następujące sekcje:
# Dodaj przed sekcją server {...}
http {
# Optymalizacja buforowania
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 8m;
large_client_header_buffers 2 1k;
# Ustawienia timeoutów
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
# Włączenie kompresji Gzip
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
application/atom+xml
application/javascript
application/json
application/ld+json
application/manifest+json
application/rss+xml
application/vnd.geo+json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/bmp
image/svg+xml
image/x-icon
text/cache-manifest
text/css
text/plain
text/vcard
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy;
}
„Prawdziwa optymalizacja zaczyna się tam, gdzie kończy się standardowa konfiguracja. Nginx daje nam narzędzia, by zrobić naszą stronę WordPress wyjątkowo szybką.” – Ilya Grigorik, inżynier wydajności Google
Krok 8: Zabezpieczenie instalacji WordPress na Nginx
Bezpieczeństwo jest równie ważne jak wydajność. Dodajmy kilka dodatkowych zabezpieczeń do naszej konfiguracji:
# Dodaj w sekcji server {...}
# Ochrona przed atakami XSS
add_header X-XSS-Protection "1; mode=block";
# Ochrona przed clickjacking
add_header X-Frame-Options "SAMEORIGIN";
# Ochrona przed sniffing MIME type
add_header X-Content-Type-Options "nosniff";
# Ograniczenie metod HTTP
if ($request_method !~ ^(GET|POST|HEAD)$) {
return 444;
}
# Blokowanie dostępu do krytycznych plików WordPress
location ~* wp-config.php {
deny all;
}
location ~* wp-admin/includes {
deny all;
}
location ~* wp-includes/theme-compat/ {
deny all;
}
location ~* wp-includes/js/tinymce/langs/.*.php {
deny all;
}
Krok 9: Konfiguracja SSL/HTTPS dla WordPress na Nginx
W dzisiejszych czasach szyfrowanie SSL jest standardem. Zainstalujmy certyfikat Let’s Encrypt za pomocą Certbot:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d twoja-domena.pl -d www.twoja-domena.pl
Postępuj zgodnie z instrukcjami na ekranie, aby dokończyć instalację certyfikatu. Certbot automatycznie zaktualizuje konfigurację Nginx, aby obsługiwać HTTPS.
Krok 10: Automatyczne odnawianie certyfikatu SSL
Certyfikaty Let’s Encrypt są ważne przez 90 dni. Skonfigurujmy automatyczne odnawianie:
sudo systemctl status certbot.timer
Powyższe polecenie powinno pokazać, że timer Certbot jest aktywny i skonfigurowany do automatycznego uruchamiania.
Rozwiązywanie typowych problemów
Problem 1: Strona wyświetla błąd 502 Bad Gateway
Ten problem często występuje, gdy Nginx nie może połączyć się z PHP-FPM. Sprawdź status PHP-FPM:
sudo systemctl status php7.4-fpm
Jeśli usługa nie działa, uruchom ją:
sudo systemctl start php7.4-fpm
Sprawdź również, czy ścieżka do socketu PHP-FPM w konfiguracji Nginx jest poprawna.
Problem 2: Przekroczony limit rozmiaru przesyłanego pliku
Jeśli nie możesz przesłać dużych mediów do WordPressa, edytuj plik konfiguracyjny Nginx:
sudo nano /etc/nginx/nginx.conf
I dodaj lub zmodyfikuj następującą linię w sekcji http:
client_max_body_size 20M;
Problem 3: Wolne ładowanie strony
Jeśli Twoja strona WordPress ładuje się wolno, rozważ zainstalowanie wtyczki do cache, takiej jak WP Super Cache lub W3 Total Cache. Następnie dodaj następującą konfigurację do pliku Nginx:
# Dla WP Super Cache
location /wp-content/cache/ {
expires max;
log_not_found off;
}
# Mikrocacheowanie
fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
# Dodaj w sekcji location ~ .php$ {...}
fastcgi_cache WORDPRESS;
fastcgi_cache_valid 200 301 302 60m;
Ciekawostki o WordPress i Nginx
-
Czy wiesz, że Nginx obsługuje ponad 400 milionów stron internetowych na całym świecie, w tym wiele z największych serwisów?
-
Czy wiesz, że WordPress napędza ponad 40% wszystkich stron internetowych na świecie, co czyni go najpopularniejszym systemem zarządzania treścią?
-
Czy wiesz, że połączenie WordPress + Nginx + PHP-FPM może być nawet 3 razy szybsze niż tradycyjne WordPress + Apache?
-
Czy wiesz, że Nginx został stworzony przez rosyjskiego inżyniera Igora Sysoeva, aby rozwiązać problem C10k (obsługa 10 000 jednoczesnych połączeń)?
Podsumowanie
Konfiguracja WordPress na serwerze Nginx może wydawać się skomplikowana dla początkujących, ale krok po kroku można osiągnąć świetne rezultaty. Dzięki powyższej instrukcji masz teraz działającą, szybką i bezpieczną stronę WordPress na serwerze Nginx.
Pamiętaj, że optymalizacja to proces ciągły. Warto regularnie aktualizować WordPress, wtyczki i motywy, a także monitorować wydajność strony za pomocą narzędzi takich jak Google PageSpeed Insights czy GTmetrix.
„Najtrudniejsze w technologii jest to, że wszystko jest możliwe, ale nie wszystko jest łatwe. WordPress na Nginx jest tego doskonałym przykładem – wymaga więcej pracy na początku, ale wynagradza to z nawiązką w dłuższej perspektywie.” – Matt Mullenweg, twórca WordPressa
Powodzenia w Twojej przygodzie z WordPressem na Nginx!