Сравнение Nginx, Apache и PHP-FPM: методы и примеры кода

  1. Nginx:
    Nginx — популярный веб-сервер и обратный прокси-сервер, известный своей высокой производительностью, масштабируемостью и эффективностью. Вот несколько методов и примеров кода с использованием Nginx:

a) Базовая конфигурация блока сервера Nginx:

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.html index.php;
    location / {
        try_files $uri $uri/ =404;
    }
    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

b) Настройка SSL/TLS с помощью Let’s Encrypt:

server {
    listen 443 ssl http2;
    server_name example.com;
    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;
    location / {
        # Your other configurations here
    }
}
  1. Apache:
    HTTP-сервер Apache — один из наиболее широко используемых веб-серверов во всем мире. Он известен своей гибкостью и обширным набором функций. Вот несколько методов и примеров кода с использованием Apache:

a) Базовая конфигурация виртуального хоста Apache:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html
    <Directory /var/www/html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

b) Перезапись URL-адресов с помощью mod_rewrite:

RewriteEngine On
RewriteRule ^blog/([a-zA-Z0-9]+)/?$ blog.php?slug=$1 [L]
  1. PHP-FPM:
    PHP-FPM (менеджер процессов FastCGI) — это реализация PHP FastCGI, обеспечивающая лучшую производительность и управление ресурсами. Вот пример настройки PHP-FPM:

a) Конфигурация пула PHP-FPM:

[my_pool]
listen = /run/php-fpm/my_pool.sock
listen.owner = www-data
listen.group = www-data
listen.mode = 0660
user = www-data
group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3