Konfiguracja Nginx i PHP-FPM
Skonfiguruj Nginx jako odwrotne proxy dla PHP-FPM do obsługi aplikacji PHP
Konfiguracja Nginx i PHP-FPM to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.
Dlaczego Nginx + PHP-FPM?
Nginx to wysokowydajny serwer WWW i odwrotny serwer proxy. PHP-FPM (FastCGI Process Manager) zarządza pulą procesów roboczych PHP. Nginx przekazuje żądania PHP do FPM za pośrednictwem FastCGI.
Podstawowy blok serwera Nginx
Minimalna konfiguracja Nginx dla aplikacji PHP.
# /etc/nginx/sites-available/myapp
server {
listen 80;
server_name example.com;
root /srv/myapp/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}Dyrektywa try_files
try_files $uri $uri/ /index.php?$query_string najpierw próbuje dostarczyć plik statyczny. Jeśli go nie znajdzie, przekazuje żądanie do index.php, umożliwiając routing z użyciem front controllera (Laravel, Symfony).
Konfiguracja puli PHP-FPM
Pulę procesów roboczych należy skonfigurować w pliku /etc/php/8.3/fpm/pool.d/www.conf.
[www]
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pm.max_requests = 500 ; recycle workers to prevent leaksGniazdo Unix a TCP
Użycie gniazda Unix (fastcgi_pass unix:/run/php/php8.3-fpm.sock) jest szybsze niż TCP (127.0.0.1:9000) w komunikacji między procesami działającymi na tym samym komputerze.
HTTPS z Let's Encrypt
Certbot umożliwia uzyskanie bezpłatnych certyfikatów TLS.
$ certbot --nginx -d example.com
# Certbot modifies your Nginx config and sets up auto-renewalKompresja Gzip
Należy włączyć gzip, aby zmniejszyć rozmiar odpowiedzi.
# nginx.conf or server block:
gzip on;
gzip_types text/plain text/css application/javascript application/json;
gzip_min_length 1024;Buforowanie zasobów statycznych w przeglądarce
Do plików statycznych należy dodać nagłówki cache-control.
location ~* \.(js|css|png|jpg|gif|ico|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}Ograniczanie liczby żądań w Nginx
Należy ograniczać liczbę żądań z danego adresu IP za pomocą modułu limit_req — to pierwsza linia obrony, zanim PHP w ogóle rozpocznie pracę.
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
}
server {
location /api/ {
limit_req zone=one burst=20 nodelay;
}
}Nagłówki bezpieczeństwa
Do wszystkich odpowiedzi należy dodać nagłówki bezpieczeństwa.
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";Przeładowanie a ponowne uruchomienie
Po zmianie konfiguracji Nginx należy wykonać łagodne przeładowanie, bez przestoju: nginx -t && nginx -s reload. Po zmianie konfiguracji PHP-FPM: systemctl reload php8.3-fpm.
Podsumowanie
Należy skonfigurować Nginx za pomocą bloku serwera wskazującego przez FastCGI na public/index.php. Należy dostosować ustawienia puli PHP-FPM. Warto używać gniazd Unix oraz włączyć HTTPS, gzip i buforowanie plików statycznych.
Szybkie sprawdzenie
Co robi try_files $uri $uri/ /index.php?$query_string?
Często zadawane pytania
Czy lekcja „Konfiguracja Nginx i PHP-FPM” jest bezpłatna?
Tak — pełny tekst „Konfiguracja Nginx i PHP-FPM” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Konfiguracja Nginx i PHP-FPM”?
Skonfiguruj Nginx jako odwrotne proxy dla PHP-FPM do obsługi aplikacji PHP Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć PHP Academy?
Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Konfiguracja Nginx i PHP-FPM”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?
Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Konfiguracja Nginx i PHP-FPM
- Zmienne środowiskowe i pliki .env
- Wdrażanie za pomocą GitHub Actions
- Konteneryzacja aplikacji PHP za pomocą Dockera