После базовой установки Nginx часто требуется дополнительная настройка для работы с PHP, настройки SSL/TLS и оптимизации производительности.
Настройка PHP обработки через PHP-FPM
Установка PHP-FPM
Для Debian/Ubuntu:
sudo apt install php-fpm php-mysql
Для CentOS/RHEL:
sudo yum install php-fpm php-mysqlnd
Конфигурация Nginx для работы с PHP
Добавьте в конфигурацию вашего сайта:
location ~ \.php$ {
include snippets/fastcgi-php.conf; # На Debian/Ubuntu
# include fastcgi.conf; # На CentOS/RHEL
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
Важно: Убедитесь, что версия PHP в пути к sock-файлу соответствует установленной!
Проверка работы PHP
Создайте файл info.php в корне вашего сайта:
sudo sh -c 'echo "<?php phpinfo(); ?>" > /var/www/html/info.php'
Откройте в браузере http://ваш_сайт/info.php
Настройка SSL/TLS с Let's Encrypt
Установка Certbot
Для Debian/Ubuntu:
sudo apt install certbot python3-certbot-nginx
Для CentOS/RHEL:
sudo yum install certbot python3-certbot-nginx
Получение сертификата
sudo certbot --nginx -d example.com -d www.example.com
Автоматическое обновление сертификатов
Проверить автоматическое обновление:
sudo certbot renew --dry-run
Базовая оптимизация Nginx
Настройка worker процессов
В /etc/nginx/nginx.conf:
worker_processes auto; # Использовать все доступные ядра CPU
worker_rlimit_nofile 100000; # Лимит открытых файлов
Оптимизация keepalive
keepalive_timeout 30;
keepalive_requests 100000;
Включение gzip сжатия
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_min_length 1000;
gzip_comp_level 6;
gzip_proxied any;
Кэширование статических файлов
location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
expires 365d;
add_header Cache-Control "public, no-transform";
}
Безопасность Nginx
Запрет доступа к скрытым файлам
location ~ /\. {
deny all;
access_log off;
log_not_found off;
}
Защита от распространенных атак
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin";
Ограничение методов HTTP
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 405;
}
Настройка для популярных CMS
Конфигурация для WordPress
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Конфигурация для Laravel
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
Заключение
После выполнения этих настроек ваш Nginx будет:
- Поддерживать обработку PHP через PHP-FPM
- Работать с HTTPS через Let's Encrypt
- Быть оптимизированным для лучшей производительности
- Иметь базовые настройки безопасности
- Быть готовым к развертыванию популярных CMS
Рекомендуется регулярно проверять логи Nginx и обновлять программное обеспечение для поддержания безопасности и стабильности работы.
Комментарии
Пока нет комментариев. Будьте первым!