0Pricing
PHP Academy · Lekcja

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 leaks

Gniazdo 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-renewal

Kompresja 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

  1. Konfiguracja Nginx i PHP-FPM
  2. Zmienne środowiskowe i pliki .env
  3. Wdrażanie za pomocą GitHub Actions
  4. Konteneryzacja aplikacji PHP za pomocą Dockera
← Powrót do PHP Academy